解决QT Creator MSVC编译模式下的中文乱码
文章目录
- 解决QT Creator MSVC编译模式下的中文乱码
- 测试内容
- 测试环境配置
- 测试代码
- 测试结果
- 测试结论
在重装qt qt 5.15.2版本并配置MSVC 2019编译后,qt creator频频出现中文乱码,其包括不限于控制台输出乱码、界面乱码、报错乱码等。这篇博客以测试记录的形式给出解决过程。
使用最后的方法,应该可以解决qt 5.15.2版本的乱码情况,如果如此修改后依然不行,请重启一下电脑。
测试内容
检测qt creator的输出中文。(检测控制台和问题提示的输出。)
测试环境配置
qt 5.15.2 + MSVC 2019
界面环境:
文本编辑器:
.pro文件配置:
msvc{QMAKE_CFLAGS += /utf-8QMAKE_CXXFLAGS += /utf-8# QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
}
主函数代码设置
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
测试代码
void logMessages() {// 使用 std::cout 输出 UTF-8 编码的字符串std::cout << "cout测试内容" << std::endl;// 使用 QTextStream 强制控制台使用 UTF-8 编码QTextStream out(stdout);out.setCodec("UTF-8");out << QString::fromUtf8("out测试内容") << endl;// 修改 qDebug 的输出编码QString testString = QString::fromUtf8("qdebug测试内容");qDebug().noquote() << testString.toUtf8();qDebug()<<QString::fromUtf8("qdebug测试内容");QVariant var = QString("qv测试");QVariant var1 = QString::fromUtf8("qvutf8测试");QVariant var2 = QString::fromLocal8Bit("qvlocal8测试");qDebug() << var.toString();qDebug() << var1.toString();qDebug() << var2.toString();
}int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 设置 QTextCodec 为 UTF-8QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));logMessages();return a.exec();
}
测试结果
1、Release和Debug输出结果均正常
2、问题输出中文正常
3、界面显示正常
测试结论
- 编辑器、kits、环境编码都需要配置
- .pro文件配置msvc必不可少
- main函数配置
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
必不可少