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 字符串解码为 Unicode
QByteArray unicodeBytes = codecIso88591->fromUnicode(iso88591String);
// 将 Unicode 编码为 GBK
QString 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