Monday 14 March 2016

Linux 下解决WINE中文乱码

引子

刚刚脱离WINDOWS进入LINUX甜蜜怀抱,我还保持着极高的热情来弄linux的各种文件,代码包。然而有些软件确实只有windows系统版本实在麻烦,想来想去还是决定下个wine来模拟windows环境。
吐槽一下:wine居然有731M!!!都快赶上UBUNTU系统大小了。。而且还不是虚拟机。

Wine 原理

先来介绍一下wine的原理: wine是通过从底层winAPI移植到Unix like环境下的,由于操作系统始终区别很大(线程,kernel mode等),使用wine来执行exe程序的时候实际上就是用wine来进行api的转换。

Wine 安装

安装就不说了。更新包库以后直接sudo apt-get install wine

Wine中文乱码

老娘性冲冲打开播布课软件,第一次转换用了5分钟,心凉了半截(其实是我电脑不给力),打开一看中文全都成了框框,心凉完了。不过遇到问题就要解决嘛,否则对不起谷歌提供这么好的搜索引擎。刚开始找了好几个解决方法都是说要替换ttf文件,或者下新的依赖库,步骤又乱七八糟的。实在没心情跟着做,不过大概明白了之所以显示乱码是因为字体的问题。
于是又找到了中文Linux维基:戳这里
就解决了问题。
步骤:
随便在一个地方编辑个注册表文档 file_name.reg:
REGEDIT4
 
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
"Lucida Sans Unicode"="wqy-microhei.ttc"
"Microsoft Sans Serif"="wqy-microhei.ttc"
"MS Sans Serif"="wqy-microhei.ttc"
"Tahoma"="wqy-microhei.ttc"
"Tahoma Bold"="wqy-microhei.ttc"
"SimSun"="wqy-microhei.ttc"
"Arial"="wqy-microhei.ttc"
"Arial Black"="wqy-microhei.ttc"

这大概意思就是:当一种字体中不存在某个字时,可以尝试从另一个字体文件中寻找相应的字形。所以只要把当前系统中的中文字体设为"fallback"字体,汉字通常就能正确显示了。

然后在打开注册表:~$wine regedit
把刚刚写的文件导入,检查一下内容:

再看看播布课:

No comments:

Post a Comment