【问题定位与解决】解决QT Creator MSVC编译模式下的中文乱码
解决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-8
QMAKE_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-8
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
logMessages();
return a.exec();
}
测试结果
1、Release和Debug输出结果均正常
2、问题输出中文正常
3、界面显示正常
测试结论
- 编辑器、kits、环境编码都需要配置
- .pro文件配置msvc必不可少
- main函数配置
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
必不可少