Qt中文个数奇数时出现问号解决

avatar
作者
筋斗云
阅读量:0

Qt中文个数奇数时出现问号解决

目录

问题背景

最近在开发一个小工具,涉及到一些中文注释自动打印,于是摸索如何把代码里面的中文输出到csv文件中,出现了乱码,按照网上的攻略又倒腾了好几次,发现在windows平台中,用GBK格式打印中文时,个数为奇数总是在结尾出现问号,后来又结合网上几篇指导终于解决。

问题场景

1、文件编码格式为utf-8无bom;
2、cpp代码中解析格式为gbk(这里我跟网上的攻略不同,我用utf-8解析总是各种乱码,但是用gbk就出现局部问号)
3、本地Qt编译器格式也是utf-8;
在这里插入图片描述
4、windows输出格式调整也是utf-8;

解决方案

1、将有中文打印的cpp转成utf-8带BOM格式;(可以用notepad++进行转换,比较方便)
2、对应cpp文件中添加代码:

#if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif 

3、函数调用接口添加代码:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); std::setlocale(LC_ALL, "en_US.UTF-8"); 

这里输出文件格式亲测可以不用手动修改,我猜应该会根据当前系统编码格式自动生成。
4、清理项目,防止编译中间件残留导致未编进去没生效,重新全量编译;
5、打开文件,文件输出成功!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!