QT乱码总结0.Qt乱码产生因素
https://blog.csdn.net/liujiayu2/article/details/103167953

QT乱码总结1.Unicode 和 UTF-8
https://blog.csdn.net/liujiayu2/article/details/103168020

QT乱码总结2.gbk和ANSI和gb2312的区别
https://blog.csdn.net/liujiayu2/article/details/103168168

QT乱码总结3.UNICODE有无BOM
https://blog.csdn.net/liujiayu2/article/details/103168236

QT乱码总结4.细谈本地编码
https://blog.csdn.net/liujiayu2/article/details/103168249

QT乱码总结5.万能解决方案
https://blog.csdn.net/liujiayu2/article/details/103168272

QT乱码总结6.编码测试和总结一
https://blog.csdn.net/liujiayu2/article/details/103168289

QT乱码总结7.编码测试和总结二
https://blog.csdn.net/liujiayu2/article/details/103168301

QT乱码总结8.编码测试和总结三
https://blog.csdn.net/liujiayu2/article/details/103168307

QT乱码总结9.编码测试和总结四
https://blog.csdn.net/liujiayu2/article/details/103168317

QT乱码总结编码测试工程:
https://download.csdn.net/download/liujiayu2/11987065

/测试环境/

操作系统:WIN7 简体中文版

编译器:VS2010英文版和VS2013 中文版

/测试原因

上两次测试环境的区别,vs从10到13,qt从4.8.6到5.7。有两个不同之处出现了

1.QString默认加载编码

2.预编译指令#pragma execution_character_set是否有用。

由于测试环境不是单一变量,也不好说是哪种原因导致的这种变化。心想着最好能试试vs2010 + Qt5.7 版本 和 vs2013 + Qt4.8.6版本,这样才好区分到底是什么原因导致的嘛。可是事与愿违,事实上Qt5.7是不支持vs2010的,Qt4.8.6也不支持vs2010(官方没有对应的下载包)。所以才有了本篇测试,只测VS不测QT.

/测试编码

我爱中国

ANSI(GBK)编码:CE D2 B0 AE D6 D0 B9 FA

UTF-8编码:E6 88 91 E7 88 B1 E4 B8 AD E5 9B BD

UTF-8编码(bom):EF BB BF E6 88 91 E7 88 B1 E4 B8 AD E5 9B BD

UNICODE编号:\u6211\u7231\u4e2d\u56fd

/

/测试代码/

#include "stdafx.h"

//#pragma execution_character_set("utf-8")

int _tmain(int argc, _TCHAR* argv[])

{

printf("我爱中国");

getchar();

return 0;

}

/

/

测试1:

编译器:VS2010

文件编码:ANSI (VS创建默认使用编码)

是否使用#pragma execution_character_set:否

测试结果:

正常现象,不做分析

/

测试2:

编译器:VS2010

文件编码:UTF-8带BOM

是否使用#pragma execution_character_set:否

测试结果:

UTF-8带BOM结果和ANSI一样。可见这个与qt无关,window平台下,vs编译器,文件采用UTF-8带BOM或者ANSI编码,结果是一样的。

/

测试3:

编译器:VS2010

文件编码:UTF-8无BOM

是否使用#pragma execution_character_set:否

测试结果:

/

测试4:

编译器:VS2010

文件编码:UTF-8无BOM

是否使用#pragma execution_character_set:

分别使用

#pragma execution_character_set("utf-8")

#pragma execution_character_set("gb2312")

#pragma execution_character_set("AAAA")

测试结果:

结果显示,无论#pragma execution_character_set怎么设置在vs2010下等于没有。

/

测试5:

编译器:VS2013

文件编码:ANSI (VS创建默认使用编码)

是否使用#pragma execution_character_set:否

测试结果:

正常现象,不做分析

/

测试6:

编译器:VS2013

文件编码:UTF-8无BOM

是否使用#pragma execution_character_set:否

测试结果:

正常现象,不做分析

/

测试7:

编译器:VS2013

文件编码:UTF-8无BOM

是否使用#pragma execution_character_set:

分别使用

#pragma execution_character_set("utf-8")

#pragma execution_character_set("gb2312")

#pragma execution_character_set("AAAA")

测试结果:

UTF-8无BOM + #pragma execution_character_set("utf-8")

UTF-8无BOM + #pragma execution_character_set("gb2312")

UTF-8无BOM + #pragma execution_character_set("AAAA")

ANSI + #pragma execution_character_set("utf-8")

ANSI + #pragma execution_character_set("gb2312")

ANSI + #pragma execution_character_set("AAAA")

本次测试和前面两次测试总结:

1.默认编码是Qt相关的,与VS版本无关,想想这也很好理解,毕竟默认编码说的QString默认加载方式。

Qt4.8.6中QString 默认编码 Latin-1。

Qt5.7中QString 默认编码utf-8

2. #pragma execution_character_set在vs2013中生效,在2010中不生效,并且只有

#pragma execution_character_set("utf-8")有用,其他的等同于没有,这个情况再测测吧,不应该这样的啊,是不是gb2312写错了。

刚刚上网查了一下资料,QString从5.0以后默认采用utf-8编码。

#pragma execution_character_set这个指令仅支持utf-8。只在vs编译器中生效。vs2015以后就过期了。说_VS_VER>=1600才生效,1600就是vs2010,咱们测试结果是2010中设置不生效的。不过整体还是和咱们刚刚测试差不多的。

QT乱码总结8.编码测试和总结三相关推荐

  1. QT乱码总结9.编码测试和总结四

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

  2. QT乱码总结7.编码测试和总结二

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

  3. QT乱码总结6.编码测试和总结一

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

  4. QT乱码总结4.细谈本地编码

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

  5. QT乱码总结5.万能解决方案

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

  6. QT乱码总结3.UNICODE有无BOM

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

  7. QT乱码总结2.gbk和ANSI和gb2312的区别

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

  8. QT乱码总结1.Unicode 和 UTF-8

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

  9. QT乱码总结0.Qt乱码产生因素

    QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...

最新文章

  1. Android获取状态栏的高度:
  2. git上传文件到github
  3. 103. 二叉树的锯齿形层次遍历
  4. Servlet+JSP
  5. 春晚之后的采访和豆瓣投名状
  6. Oracle12c部署,允许远程访问
  7. const、volatile、mutable关键字
  8. ad9生成坐标文件_提高效率 | 教你批量提取CAD坐标的小技巧
  9. 如何更新Word文档的附图或附表序号
  10. Spring MVC中的统一异常处理
  11. matlab qpsk 星座图,QPSK误码率和星座图MATLAB仿真
  12. 微信小程序入门八头像上传
  13. java excel 数组公式_Apache poi中的数组公式
  14. 英语之脆弱的,易受伤的
  15. blog10 提取候选词的输入文本
  16. XDOJ 哥德巴赫猜想
  17. SQLServer存储过程中break、continue及return的使用
  18. git(一)不同情景下的git用法
  19. JWT授权为啥要在 Authorization标头里加个Bearer 呢
  20. 遥遥领先一键导出微信小程序、UNIAPP低代码源码使用介绍

热门文章

  1. 权限操作-springSecurity快速入门-使用自定义页面
  2. 自定义工具类:工具类介绍
  3. 基本的SQL-SELECT语句练习
  4. jvm_虚拟机参数讲解(二)
  5. 使用Github(基本概念实战操作)
  6. 学计算机的男孩子怎么追女孩子,男孩子追女孩子的套路,原来有这么多,快来学一学...
  7. flyme禁止系统更新_魅族Flyme更新8.1.2.3A:重要系统更新!
  8. Spring AbstractAutowireCapableBeanFactory
  9. Spring注解编程基石(四)
  10. 为什么Segment会从微服务退回单体架构?