当前位置: 代码迷 >> QT开发 >> 从MAC OS下写的程序,放到windos下用QTCreator编译,界面的汉语全成了乱码
  详细解决方案

从MAC OS下写的程序,放到windos下用QTCreator编译,界面的汉语全成了乱码

热度:37   发布时间:2016-04-25 03:25:53.0
从MAC OS下写的程序,放到windos下用QTCreator编译,界面的中文全成了乱码

    //设置菜单状态.
    pLineState->addAction(Image.copy(0,0,16,16), "在线");
    pLineState->addAction(Image.copy(32,0,16,16), "隐身");
    pLineState->addAction(Image.copy(48,0,16,16), "上课中");
    pLineState->addAction(Image.copy(64,0,16,16), "离开");
    pLineState->addAction(Image.copy(96,0,16,16), "勿扰");
    //endend


所有用代码加上去的中文在界面显示都是乱码。
我用的文本编辑的编码格式是UTF-8.

同样的代码在OS X下面可以在界面正常显示中文
------解决方案--------------------
用utf-8的话应该不会出现乱码呀,你换为gb2312试试
------解决方案--------------------
在QApplication定义后面加上这句试试:
QTextCodec::setCodecForCString(QTextCodec::codecForLocal());
大概是这样。。。
------解决方案--------------------
引用:
我用的是QT5,貌似没有这个函数了。

如果你用的是非MVSC,(比如MinGW,Intel C++等)那么你应该不会遇到乱码才对。

如果你用的是MSVC,那么根据你所用的版本不同2005,2008,2010, 2012,处理方式各不相同。(而且2005、2012目前根本不支持这么做,不清楚以后会不会有补丁出来)
------解决方案--------------------
MSVC对UTF8支持非常差,而且各个版本支持的不一样。
------解决方案--------------------
引用:
windows下,我用的也是QT5编译的。目前的做法是在中文的前面加上QStringLiteral(“在线”) 这样的宏。

但是这样的修改量好大。


恩,这种方式直接使用UTF16绕过了MSVC的UTF8问题。同时源码字符集采用带BOM的UTF8格式保存,以保持和在macx下运行正常。

不过某些较老的gcc可能不喜欢BOM。