Qt Debug模式下应用程序输出乱码
- 一、问题描述
- 二、解决方法
- 三、相关测试
一、问题描述
源码为utf-8编码.
- Qt Creator在
Debug模式
下运行程序,下方应用程序输出界面显示乱码
. 但正常运行无乱码:
二、解决方法
尝试修改文件编码、执行编码无果…
可参考 Qt Debug模式中文乱码:https://blog.csdn.net/waooi/article/details/134577285
语言->管理语言设置->更改系统区域设置->beta版UTF-8
我使用以上方法无效,应用程序输出依旧为乱码。但是设置为run in terminal可以正常输出中文…
具体步骤如下所示 (Win10系统):
-
- 打开控制面板,查看方式选择
类别
,然后点击更改如期、时间或数字格式
:
- 打开控制面板,查看方式选择
-
- 在弹出的界面中左上角选择
管理
,然后点击更改系统区域设置
:
- 在弹出的界面中左上角选择
-
- 勾选如下图所示,点击确定即可 (
需重新启动才能生效
):
- 勾选如下图所示,点击确定即可 (
-
- 重启后应用程序输出界面依旧乱码(
此窗口可能不是用的windows环境
),故直接调用windows小黑框(确定windos环境是utf-8.. 这样准没错了
…)
- 重启后应用程序输出界面依旧乱码(
三、相关测试
牵扯到了三种编码,utf-8
、GBK
和iso88591
… 怀疑是windows下debug时候gdb的问题…
-
- 直接运行与Debug运行结果对比
- 直接运行与Debug运行结果对比
-
- 修改上述解决方案,run in terminal勾选与否的对比
- 修改上述解决方案,run in terminal勾选与否的对比
-
- 测试代码
#include <QCoreApplication>
#include <QDebug>
#include <QString>
#include <QTextCodec>QString iso88591ToGbk(const QString &iso88591String) {// 获取 ISO-8859-1 和 GBK 的编解码器QTextCodec *codecIso88591 = QTextCodec::codecForName("ISO-8859-1");QTextCodec *codecGbk = QTextCodec::codecForName("GBK");if (!codecIso88591 || !codecGbk) {// 编解码器未找到,处理错误return QString();}// 将 ISO-8859-1 字符串解码为 UnicodeQByteArray unicodeBytes = codecIso88591->fromUnicode(iso88591String);// 将 Unicode 编码为 GBKQString gbkString = codecGbk->toUnicode(unicodeBytes);return gbkString;
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QString cs = "中文";qDebug()<<QString::fromUtf8("中文");qDebug()<<iso88591ToGbk("ÖÐÎÄ");qDebug()<<cs;//return a.exec();
}
-
- 参考链接
Qt开发中文显示乱码(源码、执行、运行环境):https://blog.csdn.net/QtCompany/article/details/130565849
Qt报错 converting to execution character set:illegal byte sequence:https://blog.csdn.net/WHEgqing/article/details/129792285
编码格式检测(中文乱码问题):https://blog.csdn.net/qq935667108/article/details/124823074
将中文通过ISO-8859-1方式编码传输:https://www.cnblogs.com/blanset/p/16910177.html