您的位置:首页 > 运维架构 > Linux

Linux和Windows平台文件编码问题

2016-11-24 21:03 274 查看
今天在工作中遇到一个问题是“θ”字符没办法在Linux中正常显示,而在Windows平台中可以显示,由于软件必须支持win和Linux双平台,故需要解决这个问题。

在寻找BUG原因的过程中我发现原因就是Linux的文件编码格式和windows是不一样的,在Windows中编写的cpp源文件使用的是GBK2312编码格式,而在Linux中编写的cpp文件格式则为unicode,所以在windows平台编写的非英文字符在Linux下显示为乱码。

上网查询后发现有以下几种解决方案:

修改Linux的默认编码为GBK

方法1:

vi /etc/sysconfig/i18n

默认环境变量LANG="en_US.UTF-8"

SYSFONT="latarcyrheb-sun16"

修改为:

LANG="zh_CN.GBK"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

SYSFONT="latarcyrheb-sun16"

方法2:

vi /etc/profile

export LC_ALL="zh_CN.GBK"

export LANG="zh_CN.GBK"

大家可以看出来这种方法修改了Linux的本地环境变量,使得支持GBK的编码,但是我们的程序是需要发布的,不允许也不能直接修改用户本地的编码方式,所以在这种方法是不可取的。

好了,不卖关子了,我最后的解决办法是使用了Qt中的QChar类型,这种类对象可以使用Unicode码直接初始化为对应字符

例如:Qchar c(0xFFF);

这样就不需要使用输入法来输入字符,而且只要支持Unicode的平台都可以显示该字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: