Qt中文个数奇数时出现问号解决
目录
- 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、打开文件,文件输出成功!