QT乱码总结2.gbk和ANSI和gb2312的区别
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
?
?
?
GB2312和GBK的區別
1、收錄不同:GB2312標準共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個;GBK共收入21886個漢字和圖形符號。
2、表示不同:GB2312對任意一個圖形字符都采用兩個字節表示,并對所收漢字進行了“分區”處理,每區含有94個漢字/符號,分別對應第一字節和第二字節。GBK采用雙字節表示,總體編碼范圍為8140-FEFE之間,首字節在81-FE之間,尾字節在40-FE之間。
3、處理功能不同:對于人名、古漢語等方面出現的罕用字,GB2312不能處理,這導致了后來GBK 及GB18030 漢字字符集的出現。
每種編碼方式的特點:
【1】ASCII 每個字符占據1bytes,用二進制表示的話最高位必須為0(擴展的ASCII不在考慮范圍內),因此ASCII只能表示128個字
【2】GB2312 最早一版的中文編碼,每個字占據2bytes。由于要和ASCII兼容,那這2bytes最高位不可以為0了(否則和ASCII會有沖突)。在GB2312中收錄了6763個漢字以及682個特殊符號,已經囊括了生活中最常用的所有漢字。
【3】GBK 由于GB2312只有6763個漢字,我漢語博大精深,只有6763個字怎么夠?于是GBK中在保證不和GB2312、ASCII沖突(即兼容GB2312和ASCII)的前提下,也用每個字占據2bytes的方式又編碼了許多漢字。經過GBK編碼后,可以表示的漢字達到了20902個,另有984個漢語標點符號、部首等。值得注意的是這20902個漢字還包含了繁體字。
【4】GB18030 然而,GBK的兩萬多字也已經無法滿足我們的需求了,還有更多可能你自己從來沒見過的漢字需要編碼。這時候顯然只用2bytes表示一個字已經不夠用了(2bytes最多只有65536種組合,然而為了和ASCII兼容,最高位不能為0就已經直接淘汰了一半的組合,只剩下3萬多種組合無法滿足全部漢字要求)。因此GB18030多出來的漢字使用4bytes編碼。當然,為了兼容GBK,這個四字節的前兩位顯然不能與GBK沖突(實操中發現后兩位也并沒有和GBK沖突)。我國在2000年和2005年分別頒布的兩次GB18030編碼,其中2005年的是在2000年基礎上進一步補充。至此,GB18030編碼的中文文件已經有七萬多個漢字了,甚至包含了少數民族文字。
?
你一定比較好奇這些中文編碼是如何做到“兼容”的,我們來看下圖:
?
各種中文編碼方式的前兩位
這圖中展示
總結
以上是生活随笔為你收集整理的QT乱码总结2.gbk和ANSI和gb2312的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT乱码总结1.Unicode 和 UT
- 下一篇: s3c2440移植MQTT