QT乱码总结8.编码测试和总结三
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.编码测试和总结三相关推荐
- QT乱码总结9.编码测试和总结四
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
- QT乱码总结7.编码测试和总结二
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
- QT乱码总结6.编码测试和总结一
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
- QT乱码总结4.细谈本地编码
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
- QT乱码总结5.万能解决方案
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
- QT乱码总结3.UNICODE有无BOM
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
- QT乱码总结2.gbk和ANSI和gb2312的区别
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
- QT乱码总结1.Unicode 和 UTF-8
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
- QT乱码总结0.Qt乱码产生因素
QT乱码总结0.Qt乱码产生因素 https://blog.csdn.net/liujiayu2/article/details/103167953 QT乱码总结1.Unicode 和 UTF-8 h ...
最新文章
- Android获取状态栏的高度:
- git上传文件到github
- 103. 二叉树的锯齿形层次遍历
- Servlet+JSP
- 春晚之后的采访和豆瓣投名状
- Oracle12c部署,允许远程访问
- const、volatile、mutable关键字
- ad9生成坐标文件_提高效率 | 教你批量提取CAD坐标的小技巧
- 如何更新Word文档的附图或附表序号
- Spring MVC中的统一异常处理
- matlab qpsk 星座图,QPSK误码率和星座图MATLAB仿真
- 微信小程序入门八头像上传
- java excel 数组公式_Apache poi中的数组公式
- 英语之脆弱的,易受伤的
- blog10 提取候选词的输入文本
- XDOJ 哥德巴赫猜想
- SQLServer存储过程中break、continue及return的使用
- git(一)不同情景下的git用法
- JWT授权为啥要在 Authorization标头里加个Bearer 呢
- 遥遥领先一键导出微信小程序、UNIAPP低代码源码使用介绍
热门文章
- 权限操作-springSecurity快速入门-使用自定义页面
- 自定义工具类:工具类介绍
- 基本的SQL-SELECT语句练习
- jvm_虚拟机参数讲解(二)
- 使用Github(基本概念实战操作)
- 学计算机的男孩子怎么追女孩子,男孩子追女孩子的套路,原来有这么多,快来学一学...
- flyme禁止系统更新_魅族Flyme更新8.1.2.3A:重要系统更新!
- Spring AbstractAutowireCapableBeanFactory
- Spring注解编程基石(四)
- 为什么Segment会从微服务退回单体架构?