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

windows中的QT项目移植到linux下出现中文乱码问题

2015-05-09 18:10 645 查看
众所周知QT具有很好的移植性,今天正好闲的蛋疼,把一个windows上的界面程序移植到了linux下,于是发现了中文乱码问题,windows中的效果图:



linux下的效果图:



出现了中文乱码问题233333333

通过查阅资料【1】【2】发现,需要在linux端的代码稍作修改

ie 在main中添加如下代码:

QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);


此时问题完美解决。

但是这段话在我们的windows中编译时遇到了错误:

setCodecForTr 和 setCodecForCStrings消失了23333333

经过思考发现,问题的本质在于,我们windows中的qt用的是5.2版本

而在qt5中已经取消了setCodecForTr 和 setCodecForCStrings函数了【3】

而我们的linux中所用的qt还是默认安装版本qt4的,qt5中tr()默认utf8编码,而qt5之前的版本都是默认latin-1编码的,也就是说尽管我们的源文件都是utf8的,但在make的时候tr()中的字符自动被解释成了拉丁字符,从而造成了中文乱码的问题,因而需要显示声明一下所用的字符集为utf8.

ps:可以通过which查看linux下qmake 的存放路径(原谅我是新手)

参考文献:

1.linux下,Qt无法显示中文 http://www.itjie.wang/qt/62082.html

2.【Qt移植到linux】问题7 qt界面无法输入中文,中文不显示,乱码等问题 http://blog.163.com/qimo601@126/blog/static/15822093201382611615112/

3.QTextCodec中的setCodecForTr等终于消失了 (Qt5) http://idas643.blog.163.com/blog/static/167104838201312345727951/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐