查看完整版本: [-- qt5+mingw乱码问题 --]

QTCN开发网 -> Qt中文处理 -> qt5+mingw乱码问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

水镜先生 2015-06-03 20:05

qt5+mingw乱码问题

我用的环境是qt5.4,编译器是mingw,在调试的时候控件的标题和文本的中文均能显示正常,但是用到qDebug()就出现中文乱码了,请问怎么解决呢?(ps:常用的有关qt中文转换函数都用了,还是没有效,我怀疑是编译器的问题,不知道怎么设置)

水镜先生 2015-06-04 13:42
没人知道吗?

dbzhang800 2015-06-04 16:00
贴出相关的代码

另外,不要乱用转换函数,不要乱用 setCodecForXXXX

水镜先生 2015-06-05 16:02
我的代码是:QString s(QStringLiteral("你好啊!"));
                     qDebug() << s;
下边的应用程序输出就是乱码,怎么回事啊?

水镜先生 2015-06-05 16:06
[attachment=13808] 效果如图

水镜先生 2015-06-05 16:09
版主,知道怎么回事吗?我已经调试了几天了,解决不了,向版主求教!

水镜先生 2015-06-05 16:11
这是我的配置[attachment=13810]

dbzhang800 2015-06-05 16:52
1. 贴你完整的测试程序代码。(这个东西不应该超过10行)
2. 你的源码是gbk还是utf8?

水镜先生 2015-06-05 18:23
utf8编码带bom头。

水镜先生 2015-06-05 18:24
水镜先生:版主,知道怎么回事吗?我已经调试了几天了,解决不了,向版主求教! (2015-06-05 16:09) 

已经贴出来了啊

水镜先生 2015-06-05 20:18
人呢?

dbzhang800 2015-06-06 15:49
水镜先生:已经贴出来了啊 (2015-06-05 18:24) 

你贴的不是完整测试代码,因为行号显示36了都。不能排除你没贴出的部分有问题


水镜先生 2015-06-06 22:52
dbzhang800:你贴的不是完整测试代码,因为行号显示36了都。不能排除你没贴出的部分有问题
 (2015-06-06 15:49) 

那部分都是注释代码。

dbzhang800 2015-06-07 09:08
水镜先生:那部分都是注释代码。 (2015-06-06 22:52) 

好吧
那我就没办法了,只有你这32-35四行行代码的话,据我所知,没有任何一个C++编译器能工作

水镜先生 2015-06-07 11:02
dbzhang800:好吧
那我就没办法了,只有你这32-35四行行代码的话,据我所知,没有任何一个C++编译器能工作 (2015-06-07 09:08) 

这个是编译器的问题,我就新建了一个widgets工程,直接qDebug()一下,如果您要完整代码我可以给你发,这不是代码的问题,是编译器的问题。呵呵。明天上班给你发。

dbzhang800 2015-06-07 23:03
水镜先生:这个是编译器的问题,我就新建了一个widgets工程,直接qDebug()一下,如果您要完整代码我可以给你发,这不是代码的问题,是编译器的问题。呵呵。明天上班给你发。 (2015-06-07 11:02) 

我不关心你完整的程序代码,只关心你完整的测试代码。(这种代码,不超过10行,别人可直接编译运行,并可重现你的问题)

不管你是提问,还是提交bug,还是你自己确定问题,这种代码都是最有用的。

水镜先生 2015-06-08 08:07
[attachment=13821]测试代码上传[attachment=13822]请版主查收。

水镜先生 2015-06-08 08:08
希望版主解决,在下感激不尽!

水镜先生 2015-06-08 08:20
dbzhang800:我不关心你完整的程序代码,只关心你完整的测试代码。(这种代码,不超过10行,别人可直接编译运行,并可重现你的问题)
不管你是提问,还是提交bug,还是你自己确定问题,这种代码都是最有用的。 (2015-06-07 23:03) 

断点测试watch窗口显示值正常是中文,就是debug控制台乱码,文件编码是utf8码。编译器是mingw,图在上边的帖子已发。如果版主要测试我的代码,编译环境得一样。

dbzhang800 2015-06-08 08:43
水镜先生:断点测试watch窗口显示值正常是中文,就是debug控制台乱码,文件编码是utf8码。编译器是mingw,图在上边的帖子已发。如果版主要测试我的代码,编译环境得一样。 (2015-06-08 08:20) 

看了一下你的代码,你的qDebug() 用在了 QApplication 之前,也是不对的。因为在QApplication之前,qDebug不知道你本地的 locale!

另外,我前面说了,以后最好提供最简代码,不要额外的 widget.h/cpp 更不要哪些构建产物。只需要一个main.cpp和 和一个 .pro 就够了,二者加起来也就10行左右


PS:我手上没有MinGW环境,无法实测

水镜先生 2015-06-08 10:13
dbzhang800:看了一下你的代码,你的qDebug() 用在了 QApplication 之前,也是不对的。因为在QApplication之前,qDebug不知道你本地的 locale!
另外,我前面说了,以后最好提供最简代码,不要额外的 widget.h/cpp 更不要哪些构建产物。只需要一个main.cpp和 和一个 .pro 就够了,二者加起来 .. (2015-06-08 08:43) 

按版主的说法,调整了顺序,还是不行,版主知道mingw的编码设置如何修改吗?或者推测是什么原因?

dbzhang800 2015-06-08 10:37
据我所知,对Qt5来说,MingGW默认就工作的很好。只要没有胡乱的设置或代码,不该出现乱码

水镜先生 2015-06-08 10:44
dbzhang800:据我所知,对Qt5来说,MingGW默认就工作的很好。只要没有胡乱的设置或代码,不该出现乱码 (2015-06-08 10:37) 

我是默认的啊,没有修改mingw的配置,是和qt集成的,不是另外下载的。

realfan 2015-06-09 10:02
[attachment=13826]

realfan 2015-06-09 10:23
楼主的工程,未做任何改变,直接运行就是好的。
[attachment=13827]
控制面板,区域与语言设置,改一下试试。

水镜先生 2015-06-09 18:42
realfan:楼主的工程,未做任何改变,直接运行就是好的。
[图片]
控制面板,区域与语言设置,改一下试试。 (2015-06-09 10:23) 

版主,您的编译器是mingw吗?如果是vc编译器就没问题。

realfan 2015-06-09 19:45
水镜先生:版主,您的编译器是mingw吗?如果是vc编译器就没问题。 (2015-06-09 18:42) 

是mingw
就是qt5.4.2自带的

水镜先生 2015-06-09 22:48
realfan:是mingw
就是qt5.4.2自带的 (2015-06-09 19:45) 

您好!一般的系统设置都是中文简体啊?还需要修改吗?

水镜先生 2015-06-10 07:43
[图片]realfan:
是mingw
就是qt5.4.2自带的

我是默认的啊,没有修改mingw的配置,是和qt集成的,不是另外下载的。我的配置就是中文简体啊?请问怎么修改?

realfan 2015-06-10 08:21
水镜先生:您好!一般的系统设置都是中文简体啊?还需要修改吗? (2015-06-09 22:48) 

你的是中文版系统吗?
反正你检查一下,看是不是设置成其它语言了。

水镜先生 2015-06-10 09:06
realfan:你的是中文版系统吗?
反正你检查一下,看是不是设置成其它语言了。 (2015-06-10 08:21) 

是中文版系统,我的电脑是64位的,操作系统和mingw都是32位的,和这个有关系吗?您建议改什么语言呢?

zhang2349 2015-06-26 22:59
调试会乱码
直接运行不会乱码

yuyu414 2015-11-18 11:37
我也遇到同样问题,直接运行就正常,调试就是乱码

morg 2015-11-18 13:15
用以下方式:    

   qDebug << QString("中文显示").toStdString().c_str() << endl


查看完整版本: [-- qt5+mingw乱码问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled