日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT乱码总结8.编码测试和总结三

發布時間:2024/4/11 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:否

測試結果:

正?,F象,不做分析

/

測試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:否

測試結果:

正?,F象,不做分析

/

測試6:

編譯器:VS2013

文件編碼:UTF-8無BOM

是否使用#pragma execution_character_set:否

測試結果:

正?,F象,不做分析

/

測試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.编码测试和总结三的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。