Qt MSVC版本显示中文乱码问题

注:试了好几种,这个靠谱

问题描述:

       在windows中使用Qt MSVC版本编译Qt项目时,在代码中使用中文,在显示的时候会出现乱码;但是在Qt Designer时直接输入的中文字符可以正常显示。

解决办法:

      Qt默认的编码格式为UTF-8,MSVC使用的编码为GBK编码,当使用Qt MSBC版本进行编译而源码采用UTF-8保存时就会出现中文乱码问题。

   方法一:

        使用QTextCodec来把所有使用到中文的地方进行转换

        QTextCodec* m_pCodec = QTextCodec::codecForName("GBK");

        m_pCodec->toUnicode("中文字符");

   方法二:

       在.pro文件中添加

        msvc

     {

                 QMAKE_CFLAGS += /utf-8

                 QMAKE_CXXFLAGS += /utf-8

        }
————————————————
版权声明:本文为优快云博主「SiveenWS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_35699583/article/details/113194691

### QtMSVC中文乱码问题的解决方案 #### 设置工程文件编码 为了确保Qt项目中的源代码能够正确处理UTF-8字符,在`.pro`文件中设置编码格式为UTF-8是一个有效的措施。这可以通过向项目的.pro文件添加如下配置来实现: ```qmake CODECFORTR = UTF-8 ``` 这样做可以使得整个工程项目统一采用UTF-8作为默认编码,从而减少因不同部分使用不同编码而导致的潜在冲突[^1]。 #### 处理BOM标记缺失的问题 对于MSVC来说,默认情况下它可能无法自动识别没有Byte Order Mark (BOM)标签的UTF-8文件。因此,当保存含有汉字的内容到文本文件时,应该确保编辑器是以带有BOM的方式保存这些文件。这样做的好处是可以让编译工具链更容易理解并正确解析其中的文字数据[^2]。 #### 修改环境变量或命令行参数 有时候,通过调整系统的区域性和语言设置也可以缓解某些类型的乱码现象;另外一种方法是在启动应用程序之前修改控制台窗口的语言环境,比如通过cmd.exe执行以下指令: ```batch chcp 65001 ``` 这条语句的作用是切换当前终端会话使用的代码页至UTF-8模式,有助于改善程序输出端口上的文字呈现效果[^4]。 #### 更新Qt版本及相关库 考虑到早期版本可能存在兼容性缺陷以及未修复的bug,建议尽可能升级到最新稳定版的Qt框架及其依赖项。特别是从Qt4迁移到Qt5之后,许多内部机制都得到了改进和完善,降低了发生此类错误的概率[^3]。 #### 示例代码片段展示如何正确初始化QApplication对象以支持多字节字符集: ```cpp #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); // Your application code here return app.exec(); } ``` 上述代码设置了全局locale codec为UTF-8,这对于确保所有字符串都能被正确定义非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值