我觉得中、日、韩文用户应该都会遇到Wine中文乱码的问题,甚至其它非欧语系的用户也会遇到。
如果我们只顾着解决简体中文的乱码,对其它语系的Wine用户没用,甚至可能使别人原本正常的显示变成了乱码,Wine官方怎么能接受?
如果要彻底解决这个问题,就必须开发出通用的补丁,对各个语系的Wine用户都适用,而且能够同时显示多种语言,比如简体中文用户要能够正常运行显示正体中文软件。
设想中的通用补丁的关键是要能够自动识别待显示的字符串的编码,如果能做到这点应该就能彻底解决Wine乱码问题。
希望能有人牵头成立个小组来做这个事,包括代码编写、调试、测试,和Wine官方联系等等。
注:有现存的自动识别字符串编码的代码库,比如python-chardet, Mozilla Charset Detectors, Mozilla Charset Detectors Source Code , Universal Encoding Detector, jchardet
本人不会Linux编程,但懂点英文。
补充
给懂编程的出个点子:
全面整理Windows下有关字体及文字显示的API函数,写个 Windows程序将所用可能的字体及文字显示的API函数组合来调用一遍,将它放在Wine下运行,看看结果如何,把显示不正常的调用组合(当然包括 Wine注册表)找出来,再分析和解决。(最好是和其它中日韩文字的Wine开发者交流合作)
另外,建议不要用Windows字体测试,现在自由字体已经够用了。虽然用Windows字体测试的结果是正常的,但是很多人只用自由字体,别人还得再测试,何况要让Wine开发测试人员用Windows字体测试不太好吧。
再出个点子:
测试用例最好编写成脚本,方便自动化测试,节省人力,又不容易出错。
1)测试前自动检测 ~/.wine 目录,如果存在则随机建立一个目录作为WINEPREFIX,这样测试就不会影响平常用的~/.wine 目录了。
2)测试时自动调用上面说的那个程序,每种字体及文字显示的API函数组合运行一次,运行后自动判断相应文字是否正常显示,如果不正常则写入测试结果中。
3) 所有组合运行完后,删除那个随机建立WINEPREFIX目录。
附:如何用程序自动判断相应文字是否正常显示
编程来截取待测试程序的窗口显示,判断是否是汉字或其它应该显示的文字,当然可以用文字自动识别,但是必要性不大。其实只要测试中的文字为全角空格(或其它很容易编程判断的字符)就行了,全角空格正常显示就是空白的,如果乱码的话就不是的了,程序只要判断指定区域是否为空白就行了。
希望能有人尝试下,并和相关Wine开发人员交流合作。
自动化测试脚本、程序编写好了后,不同的发行版的用户就很方便进行测试了,更能发挥社区的力量了。
重要回贴
洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
相关贴子hzhr 写了:所谓的彻底解决中文显示乱码:
1、在注册表中设置Tahoma、MS Sans Serif等字体的 FontLink,加入中文字体。这个方法大部分情况下都是OK的
2、用了方法1之后,某些情况下还是会乱码,比如QQ,这是因为程序写的烂,使用ANSI_CHARSET创建字体(应该用 DEFAULT_CHARSET),解决方法是修正 GdiGetCodePage 函数,当用ANSI_CHARSET创建字体、GDI选择这个字体后,GdiGetCodePage应该返回的codepage是936。
wine 中文支持問題 解決方案新方向