• 7914阅读
  • 33回复

[讨论]qt5+mingw乱码问题 [复制链接]

上一主题 下一主题
离线水镜先生
 

只看楼主 倒序阅读 楼主  发表于: 2015-06-03
我用的环境是qt5.4,编译器是mingw,在调试的时候控件的标题文本中文均能显示正常,但是用到qDebug()就出现中文乱码了,请问怎么解决呢?(ps:常用的有关qt中文转换函数都用了,还是没有效,我怀疑是编译器的问题,不知道怎么设置)
离线水镜先生

只看该作者 1楼 发表于: 2015-06-04
没人知道吗?
离线dbzhang800

只看该作者 2楼 发表于: 2015-06-04
贴出相关的代码

另外,不要乱用转换函数,不要乱用 setCodecForXXXX
离线水镜先生

只看该作者 3楼 发表于: 2015-06-05
我的代码是:QString s(QStringLiteral("你好啊!"));
                     qDebug() << s;
下边的应用程序输出就是乱码,怎么回事啊?
离线水镜先生

只看该作者 4楼 发表于: 2015-06-05
效果如图
离线水镜先生

只看该作者 5楼 发表于: 2015-06-05
版主,知道怎么回事吗?我已经调试了几天了,解决不了,向版主求教!
离线水镜先生

只看该作者 6楼 发表于: 2015-06-05
这是我的配置
离线dbzhang800

只看该作者 7楼 发表于: 2015-06-05
1. 贴你完整的测试程序代码。(这个东西不应该超过10行)
2. 你的源码是gbk还是utf8?
离线水镜先生

只看该作者 8楼 发表于: 2015-06-05
utf8编码带bom头。
离线水镜先生

只看该作者 9楼 发表于: 2015-06-05
回 水镜先生 的帖子
水镜先生:版主,知道怎么回事吗?我已经调试了几天了,解决不了,向版主求教! (2015-06-05 16:09) 

已经贴出来了啊
离线水镜先生

只看该作者 10楼 发表于: 2015-06-05
人呢?
离线dbzhang800

只看该作者 11楼 发表于: 2015-06-06
回 水镜先生 的帖子
水镜先生:已经贴出来了啊 (2015-06-05 18:24) 

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

离线水镜先生

只看该作者 12楼 发表于: 2015-06-06
回 dbzhang800 的帖子
dbzhang800:你贴的不是完整测试代码,因为行号显示36了都。不能排除你没贴出的部分有问题
 (2015-06-06 15:49) 

那部分都是注释代码。
离线dbzhang800

只看该作者 13楼 发表于: 2015-06-07
回 水镜先生 的帖子
水镜先生:那部分都是注释代码。 (2015-06-06 22:52) 

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

只看该作者 14楼 发表于: 2015-06-07
回 dbzhang800 的帖子
dbzhang800:好吧
那我就没办法了,只有你这32-35四行行代码的话,据我所知,没有任何一个C++编译器能工作 (2015-06-07 09:08) 

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

只看该作者 15楼 发表于: 2015-06-07
回 水镜先生 的帖子
水镜先生:这个是编译器的问题,我就新建了一个widgets工程,直接qDebug()一下,如果您要完整代码我可以给你发,这不是代码的问题,是编译器的问题。呵呵。明天上班给你发。 (2015-06-07 11:02) 

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

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

只看该作者 16楼 发表于: 2015-06-08
debug乱码 debug.zip (530 K) 下载次数:8 测试代码上传请版主查收。
离线水镜先生

只看该作者 17楼 发表于: 2015-06-08
希望版主解决,在下感激不尽!
离线水镜先生

只看该作者 18楼 发表于: 2015-06-08
回 dbzhang800 的帖子
dbzhang800:我不关心你完整的程序代码,只关心你完整的测试代码。(这种代码,不超过10行,别人可直接编译运行,并可重现你的问题)
不管你是提问,还是提交bug,还是你自己确定问题,这种代码都是最有用的。 (2015-06-07 23:03) 

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

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

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

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


PS:我手上没有MinGW环境,无法实测
离线水镜先生

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

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

只看该作者 21楼 发表于: 2015-06-08
据我所知,对Qt5来说,MingGW默认就工作的很好。只要没有胡乱的设置或代码,不该出现乱码
离线水镜先生

只看该作者 22楼 发表于: 2015-06-08
回 dbzhang800 的帖子
dbzhang800:据我所知,对Qt5来说,MingGW默认就工作的很好。只要没有胡乱的设置或代码,不该出现乱码 (2015-06-08 10:37) 

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

只看该作者 23楼 发表于: 2015-06-09
离线realfan

只看该作者 24楼 发表于: 2015-06-09
楼主的工程,未做任何改变,直接运行就是好的。

控制面板,区域与语言设置,改一下试试。
离线水镜先生

只看该作者 25楼 发表于: 2015-06-09
回 realfan 的帖子
realfan:楼主的工程,未做任何改变,直接运行就是好的。
[图片]
控制面板,区域与语言设置,改一下试试。 (2015-06-09 10:23) 

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

只看该作者 26楼 发表于: 2015-06-09
回 水镜先生 的帖子
水镜先生:版主,您的编译器是mingw吗?如果是vc编译器就没问题。 (2015-06-09 18:42) 

是mingw
就是qt5.4.2自带的
离线水镜先生

只看该作者 27楼 发表于: 2015-06-09
回 realfan 的帖子
realfan:是mingw
就是qt5.4.2自带的 (2015-06-09 19:45) 

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

只看该作者 28楼 发表于: 2015-06-10
回 realfan 的帖子
realfan:
是mingw
就是qt5.4.2自带的

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

只看该作者 29楼 发表于: 2015-06-10
回 水镜先生 的帖子
水镜先生:您好!一般的系统设置都是中文简体啊?还需要修改吗? (2015-06-09 22:48) 

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

只看该作者 30楼 发表于: 2015-06-10
回 realfan 的帖子
realfan:你的是中文版系统吗?
反正你检查一下,看是不是设置成其它语言了。 (2015-06-10 08:21) 

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

只看该作者 31楼 发表于: 2015-06-26
调试会乱码
直接运行不会乱码
离线yuyu414

只看该作者 32楼 发表于: 2015-11-18
我也遇到同样问题,直接运行就正常,调试就是乱码
离线morg

只看该作者 33楼 发表于: 2015-11-18
用以下方式:    

   qDebug << QString("中文显示").toStdString().c_str() << endl
快速回复
限100 字节
 
上一个 下一个