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

相关推荐

  1. Qt读写ini文件,出现中文乱码问题

    2024-07-17 00:20:06       64 阅读
  2. Qt::中文乱码问题解决

    2024-07-17 00:20:06       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 00:20:06       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 00:20:06       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 00:20:06       57 阅读
  4. Python语言-面向对象

    2024-07-17 00:20:06       68 阅读

热门阅读

  1. 1.3Zygote

    2024-07-17 00:20:06       20 阅读
  2. 精准打击:Conda中conda remove命令的高效使用指南

    2024-07-17 00:20:06       22 阅读
  3. react项目使用EventBus实现登录拦截

    2024-07-17 00:20:06       20 阅读
  4. MySQL 关键字 IN 与 EXISTS 的使用与区别

    2024-07-17 00:20:06       22 阅读
  5. 关于ARP欺骗

    2024-07-17 00:20:06       20 阅读
  6. 20. Python读取.mat格式文件通用函数

    2024-07-17 00:20:06       15 阅读
  7. wxml与标准的html的异同

    2024-07-17 00:20:06       17 阅读
  8. 优雅退出Conda环境:conda deactivate命令的妙用

    2024-07-17 00:20:06       21 阅读
  9. 原码补码反码移码

    2024-07-17 00:20:06       18 阅读
  10. Linux 多进程编程详解

    2024-07-17 00:20:06       20 阅读
  11. [Css-in-js]wyw-in-js的使用

    2024-07-17 00:20:06       20 阅读
  12. 学习编程的第一天

    2024-07-17 00:20:06       19 阅读