【问题定位与解决】解决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

image-20240809111138984

界面环境:

image-20240809111125151

文本编辑器:

image-20240809111206364

.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输出结果均正常

image-20240809111541058

image-20240809111603671

2、问题输出中文正常

image-20240809111648030

3、界面显示正常

image-20240809112606562

测试结论

  • 编辑器、kits、环境编码都需要配置
  • .pro文件配置msvc必不可少
  • main函数配置QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));必不可少
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值