• 11536阅读
  • 15回复

[提问]Qt 4.5.2 中文乱码 [复制链接]

上一主题 下一主题
离线tszy
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-13
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
在Window上编好的Qt程序拿到linux下去编译运行,可是一打开程序就发现代码里面的中文全成了乱码,代码区上面还出现一个提示框说我的文件的编码方式不正确(Window 下选用的事System编码,linux下的环境也是这个编码),要我选择新的编码方式,我把那个提示框里面的编码方式挨个选择后都不能正确的显示中文。
程序可以运行,但是出来的中文还是乱码。label等控件设置的中文是正常显示,但是代码加上去的中文就显示不了。


请大家指点!
离线dbzhang800

只看该作者 1楼 发表于: 2009-10-13
既然会用linux,你应该知道问题出在哪儿才对

=====================================
题外:
既然打算跨平台,最好代码中还是不要出现中文吧
离线wd007

只看该作者 2楼 发表于: 2009-10-13
说的对,还是采用国际化的方法比较好,尽量不要直接用中文。

另外,不同平台的编码格式要换成一致的,不如都用utf-8等,这样最好。
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线jorneyr

只看该作者 3楼 发表于: 2009-10-13
只要工程使用的是UTF-8编码, 代码中无所谓有没有中文, 殾有正确显示. 所以, 代码中有没有中文都不是关键.
System的编码是与系统有关的, 随系统而变, 如windows下的System编码可能是GB18030, 而linux下的System好像就是UTF-8
离线hehui

只看该作者 4楼 发表于: 2009-10-13
Linux下默认文件编码UTF8,Win下GBK~
离线jorneyr

只看该作者 5楼 发表于: 2009-10-14
算了, 直接给你解决中文乱码的方法吧, 下面的方法是我一直使用的, 别人的就不清楚了:
1. 新建工程, 把工程的编码设置为UTF-8.
2. main函数中使用QTextCodec, 如下代码:
#include <QtGui/QApplication>
#include "MainDialog.h"
#include <QTextCodec>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForTr(codec);

    MainDialog w;
    w.show();

    return a.exec();
}

上面的方法, 在Mac上写好程序, 编码运行, 没有乱码.
同一个工程, 再拿到Windows上编译运行, 仍然没有乱码, 想必在Linux中也不会出现乱码问题.

已经使用此方法写了很多工程了, 一直能工作得很好.
离线tszy
只看该作者 6楼 发表于: 2009-10-14
引用第1楼dbzhang800于2009-10-13 20:19发表的  :
既然会用linux,你应该知道问题出在哪儿才对
=====================================
题外:
既然打算跨平台,最好代码中还是不要出现中文吧



首先谢谢大家的热心回复!

我用linxu新手,到目前为止只是用来进行Qt的开发,仅仅停留在会使用一些基本的命令的阶段,别的什么更加复杂和深入的功能都还没有用过。不怕大家笑话~~


我也从网上搜索到很多关于Qt中文的问题,后来把代码在:Iinux下重新敲了一遍,界面上的乱码是没了,但是界面按钮上的动态显示的中文始终没有解决。
试过了像在Mian文件里加语句什么的,还有在有中文的地方进行各种编码转化,仍然显示"????",很是郁闷。
离线napier

只看该作者 7楼 发表于: 2009-10-14
引用第5楼jorneyr于2009-10-14 00:46发表的  :
算了, 直接给你解决中文乱码的方法吧, 下面的方法是我一直使用的, 别人的就不清楚了:
1. 新建工程, 把工程的编码设置为UTF-8.
``````````````````````````````````````````````````````请问这里是怎么做的?
2. main函数中使用QTextCodec, 如下代码:
#include <QtGui/QApplication>
#include "MainDialog.h"
.......
离线jorneyr

只看该作者 8楼 发表于: 2009-10-14
使用QtCreator, 如图即可设置工程的编码:
离线napier

只看该作者 9楼 发表于: 2009-10-14
thx~
离线wd007

只看该作者 10楼 发表于: 2009-10-14
在字串前用tr()了吗。
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线tszy
只看该作者 11楼 发表于: 2009-10-26
谢谢各位的回答,我已经知道是怎么回事了,就像上面贴图那样,吧window 和Linux下的Qt Creator 的编码设置成UTF-8,两边就会识别了。
再有 程序中需要显示中文的地方没什么好办法,加Ttr()吧。反正我是只找到这种办法,各位有什么好办法请发表出来。


再次感谢各位的热心!
离线wd007

只看该作者 12楼 发表于: 2009-10-26
如你所说,加tr()是基本的方法,Qt官方也是这样推荐的。

这个过程不错,分享了你的经验
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线hiti_tony
只看该作者 13楼 发表于: 2009-10-27
!顶!
离线zhmzwdfx
只看该作者 14楼 发表于: 2012-04-18
我选择了utf8编码还是有乱码????
脚踏实地 自强不息
离线笑看江湖

只看该作者 15楼 发表于: 2012-04-18
我也遇到了你的问题,我所以界面显示不敢用中文了,用的英文
但是注释还是乱码,
对于注释的乱码,我倒是有个解决办法
打开个控制台,LANG=zh_CN.GBK
然后再用这个控制台打开QT,这样打开win32下的工程,注释就没乱码了
不知道对你是否有帮助
快速回复
限100 字节
 
上一个 下一个