当前位置: 首页 > article >正文

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

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"));必不可少

http://www.kler.cn/news/307096.html

相关文章:

  • 机器学习--K-Means
  • 浙大数据结构:05-树7 堆中的路径
  • PHP智慧家政同城服务家政系统小程序源码
  • Java集合(八股)
  • 大数据新视界 --大数据大厂之数据治理之道:构建高效大数据治理体系的关键步骤
  • CleanMyMac 5 for Mac 最新中文破解版下载 系统优化垃圾清理工具
  • python AssertionError: Torch not compiled with CUDA enabled
  • 随机规划及其MATLAB实现
  • Jetpack PDF库:解锁Android应用中的PDF功能
  • FloodFill算法【下】
  • WGCAT工单系统可以让客户自己提交工单吗
  • Day21笔记-封装继承
  • MySQL练手题--体育馆的人流量(困难)
  • [数据集][目标检测]疟疾恶性疟原虫物种目标检测数据集VOC+YOLO格式948张1类别
  • 大学生看过来,必备4款写论文AI写作网站先稿后付
  • 《论负载均衡技术在Web系统中的应用》写作框架,软考高级系统架构设计师
  • Python网络爬虫:如何高效获取网络数据
  • vue3 透传 Attributes
  • TDengine 签约前晨汽车,解锁智能出行的无限潜力
  • 【计算机网络】网络通信中的端口号
  • Android SPN/PLMN 显示逻辑简介
  • SpringBoot框架Web开发
  • 第十一章 【后端】商品分类管理微服务(11.1)——创建父工程
  • Python 实现 LM 算法(Levenberg-Marquardt)
  • PCIe进阶之TL:First/Last DW Byte Enables Rules Traffic Class Field
  • Linux命令分享 四 (ubuntu 16.04)(vi操作文件)
  • 第十七节:学习Hutool上传文件(自学Spring boot 3.x的第四天)
  • C++比大小游戏
  • 虚幻引擎Gameplay探索 Actor 之间的高效通信与交互技巧一
  • 鹏哥C语言39---goto语句(关机程序 )