今天在工作中遇到一个问题是“θ”字符没办法在Linux中正常显示,而在Windows平台中可以显示,由于软件必须支持win和Linux双平台,故需要解决这个问题。
在寻找BUG原因的过程中我发现原因就是Linux的文件编码格式和windows是不一样的,在Windows中编写的cpp源文件使用的是GBK2312编码格式,而在Linux中编写的cpp文件格式则为unicode,所以在windows平台编写的非英文字符在Linux下显示为乱码。
上网查询后发现有以下几种解决方案:
修改Linux的默认编码为GBK
方法1:
vi /etc/sysconfig/i18n
默认环境变量
SYSFONT="latarcyrheb-sun16"
修改为:
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"
方法2:
vi /etc/profile
export LC_ALL="zh_CN.GBK"
export
大家可以看出来这种方法修改了Linux的本地环境变量,使得支持GBK的编码,但是我们的程序是需要发布的,不允许也不能直接修改用户本地的编码方式,所以在这种方法是不可取的。
好了,不卖关子了,我最后的解决办法是使用了Qt中的QChar类型,这种类对象可以使用Unicode码直接初始化为对应字符
例如:Qchar c(0xFFF);
这样就不需要使用输入法来输入字符,而且只要支持Unicode的平台都可以显示该字符。
