QT乱码总结2.gbk和ANSI和gb2312的区别
QT亂碼總結(jié)0.Qt亂碼產(chǎn)生因素
https://blog.csdn.net/liujiayu2/article/details/103167953
QT亂碼總結(jié)1.Unicode 和 UTF-8
https://blog.csdn.net/liujiayu2/article/details/103168020
QT亂碼總結(jié)2.gbk和ANSI和gb2312的區(qū)別
https://blog.csdn.net/liujiayu2/article/details/103168168
QT亂碼總結(jié)3.UNICODE有無(wú)BOM
https://blog.csdn.net/liujiayu2/article/details/103168236
QT亂碼總結(jié)4.細(xì)談本地編碼
https://blog.csdn.net/liujiayu2/article/details/103168249
QT亂碼總結(jié)5.萬(wàn)能解決方案
https://blog.csdn.net/liujiayu2/article/details/103168272
QT亂碼總結(jié)6.編碼測(cè)試和總結(jié)一
https://blog.csdn.net/liujiayu2/article/details/103168289
QT亂碼總結(jié)7.編碼測(cè)試和總結(jié)二
https://blog.csdn.net/liujiayu2/article/details/103168301
QT亂碼總結(jié)8.編碼測(cè)試和總結(jié)三
https://blog.csdn.net/liujiayu2/article/details/103168307
QT亂碼總結(jié)9.編碼測(cè)試和總結(jié)四
https://blog.csdn.net/liujiayu2/article/details/103168317
QT亂碼總結(jié)編碼測(cè)試工程:
https://download.csdn.net/download/liujiayu2/11987065
?
?
?
GB2312和GBK的區(qū)別
1、收錄不同:GB2312標(biāo)準(zhǔn)共收錄6763個(gè)漢字,其中一級(jí)漢字3755個(gè),二級(jí)漢字3008個(gè);GBK共收入21886個(gè)漢字和圖形符號(hào)。
2、表示不同:GB2312對(duì)任意一個(gè)圖形字符都采用兩個(gè)字節(jié)表示,并對(duì)所收漢字進(jìn)行了“分區(qū)”處理,每區(qū)含有94個(gè)漢字/符號(hào),分別對(duì)應(yīng)第一字節(jié)和第二字節(jié)。GBK采用雙字節(jié)表示,總體編碼范圍為8140-FEFE之間,首字節(jié)在81-FE之間,尾字節(jié)在40-FE之間。
3、處理功能不同:對(duì)于人名、古漢語(yǔ)等方面出現(xiàn)的罕用字,GB2312不能處理,這導(dǎo)致了后來(lái)GBK 及GB18030 漢字字符集的出現(xiàn)。
每種編碼方式的特點(diǎn):
【1】ASCII 每個(gè)字符占據(jù)1bytes,用二進(jìn)制表示的話最高位必須為0(擴(kuò)展的ASCII不在考慮范圍內(nèi)),因此ASCII只能表示128個(gè)字
【2】GB2312 最早一版的中文編碼,每個(gè)字占據(jù)2bytes。由于要和ASCII兼容,那這2bytes最高位不可以為0了(否則和ASCII會(huì)有沖突)。在GB2312中收錄了6763個(gè)漢字以及682個(gè)特殊符號(hào),已經(jīng)囊括了生活中最常用的所有漢字。
【3】GBK 由于GB2312只有6763個(gè)漢字,我漢語(yǔ)博大精深,只有6763個(gè)字怎么夠?于是GBK中在保證不和GB2312、ASCII沖突(即兼容GB2312和ASCII)的前提下,也用每個(gè)字占據(jù)2bytes的方式又編碼了許多漢字。經(jīng)過(guò)GBK編碼后,可以表示的漢字達(dá)到了20902個(gè),另有984個(gè)漢語(yǔ)標(biāo)點(diǎn)符號(hào)、部首等。值得注意的是這20902個(gè)漢字還包含了繁體字。
【4】GB18030 然而,GBK的兩萬(wàn)多字也已經(jīng)無(wú)法滿足我們的需求了,還有更多可能你自己從來(lái)沒(méi)見(jiàn)過(guò)的漢字需要編碼。這時(shí)候顯然只用2bytes表示一個(gè)字已經(jīng)不夠用了(2bytes最多只有65536種組合,然而為了和ASCII兼容,最高位不能為0就已經(jīng)直接淘汰了一半的組合,只剩下3萬(wàn)多種組合無(wú)法滿足全部漢字要求)。因此GB18030多出來(lái)的漢字使用4bytes編碼。當(dāng)然,為了兼容GBK,這個(gè)四字節(jié)的前兩位顯然不能與GBK沖突(實(shí)操中發(fā)現(xiàn)后兩位也并沒(méi)有和GBK沖突)。我國(guó)在2000年和2005年分別頒布的兩次GB18030編碼,其中2005年的是在2000年基礎(chǔ)上進(jìn)一步補(bǔ)充。至此,GB18030編碼的中文文件已經(jīng)有七萬(wàn)多個(gè)漢字了,甚至包含了少數(shù)民族文字。
?
你一定比較好奇這些中文編碼是如何做到“兼容”的,我們來(lái)看下圖:
?
各種中文編碼方式的前兩位
這圖中展示
總結(jié)
以上是生活随笔為你收集整理的QT乱码总结2.gbk和ANSI和gb2312的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: QT乱码总结1.Unicode 和 UT
- 下一篇: QT乱码总结3.UNICODE有无BOM