編碼知識學習筆記之二

2021-05-27 05:27:15 字數 1402 閱讀 2747

編碼知識學習筆記之二

字元必須編碼後才能被計算機處理。計算機使用的預設編碼方式就是計算機的內碼。早期的計算機使用7位的ascii編碼,為了處理漢字,程式設計師設計了用於簡體中文的gb2312和用於正體中文的big5。

計算機使用的預設編碼方式就是計算機的內碼。

1.gb2312

2.gbk

3.gb18030

gb2312(2023年)一共收錄了7445個字元,包括6763個漢字和682個其它符號。漢字區的內碼範圍高位元組從b0-f7,低位元組從a1-fe,占用的碼位是72*94=6768。其中有5個空位是d7fa-d7fe。

gb2312 支援的漢字太少。

2023年的漢字擴充套件規範gbk1.0收錄了21886個符號,它分為漢字區和圖形符號區。漢字區包括21003個字元。

2023年的 gb18030是取代gbk1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。現在的pc平台必須支援gb18030,對嵌入式產品暫不作要求。所以手機、***一般只支援gb2312。

從ascii、 gb2312、gbk到gb18030,這些編碼方法是向下相容的,即同乙個字元在這些方案中總是有相同的編碼,後面的標準支援更多的字元。在這些編碼中,英文和中文可以統一地處理。區分中文編碼的方法是高位元組的最高位不為0。按照程式設計師的稱呼,gb2312、gbk到gb18030都屬於雙位元組字符集 (dbcs)。

有的中文windows的缺省內碼還是gbk,可以通過gb18030公升級包公升級到gb18030。不過gb18030相對gbk增加的字元,普通人是很難用到的,通常我們還是用gbk指代中文windows內碼。

雙位元組字符集

gb18030完全包含gbk的編碼的字符集,gbk的編碼的字符集是gb18030字符集的一部分

gbk完全包含gb2312的編碼的字符集,gb2312的編碼的字符集是gbk字符集的一部分

gb2312完全包含ascii的編碼的字符集,gb2312的編碼的字符集是ascii字符集的一部分

gb2312的原文還是區位碼,從區位碼到內碼,需要在高位元組和低位元組上分別加上a0

在dbcs中,gb內碼的儲存格式始終是big endian,即高位在前。

gb2312 的兩個位元組的最高位都是1。但符合這個條件的碼位只有128*128=16384個。所以gbk和gb18030的低位元組最高位都可能不是1。不過這不影響dbcs字元流的解析:在讀取dbcs字元流時,只要遇到高位為1的位元組,就可以將這兩個位元組(是指遇到的高位為1的位元組,以及緊接著的下乙個位元組)作為乙個雙位元組編碼,而不用管低位元組的高位是什麼。

SDL學習筆記之二

sdl su ce image sdl loadbmp image.bmp 2.從乙個表面,進行塊複製到另乙個表面 sdl blitsu ce int sdl blitsu ce sdl su ce src,sdl rect sr,sdl su e dst,sdl rect dr 第二個引數指定要傳...

SDL學習筆記之二

sdl su ce image sdl loadbmp image.bmp 2.從乙個表面,進行塊複製到另乙個表面 sdl blitsu ce int sdl blitsu ce sdl su ce src,sdl rect sr,sdl su e dst,sdl rect dr 第二個引數指定要傳...

Qt學習筆記之二

如下圖所示 新版本的qt gui 被包含到qtwidget中去了。可以在新建工程的pro檔案中新增包含項 qt coreguiwidgets 之前只有core 和 gui 可以在後面新增widgets 這也是為什麼有些朋友找不到標頭檔案比如說 等等 如下圖所示 再檢視qtwidgets資料夾可以發現...