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、打开文件,文件输出成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值