字元編碼整理

2021-08-22 05:40:38 字數 2059 閱讀 3070

在所有字符集中,最知名可能要數被稱為ascii的7位字符集了。它是美國資訊交換標準委員會

(american standards committee for information interchange)的縮寫, 為美國英語通訊所

設計。它由128個字元組成,包括大小寫字母、數字0-9、標點符號、非列印字元(換行符、製表

符等4個)以及控制字元(退格、響鈴等)組成。

另一種8位字符集是iso 8859-1 latin 1,也簡稱為iso latin-1。它把位於128-255之間的字

符用於拉丁字母表中特殊語言字元的編碼,也因此而得名。

把漢語、日語和越南語的一些相似的字元結合起來,在不同的語言裡,使不同的字元代表不同

的字,這樣只用2個位元組就可以編碼地球上幾乎所有地區的文字。因此,建立了unicode編碼。它通

過增加乙個高位元組對iso latin-1字符集進行擴充套件,當這些高位元組位為0時,低位元組就是iso latin-1

字元。unicode支援歐洲、非洲、中東、亞洲(包括統一標準的東亞像形漢字和南韓像形文字)。

事實證明,對可以用ascii表示的字元使用unicode並不高效,因為unicode比ascii占用大一倍的

空間,而對ascii來說高位元組的0對他毫無用處。為了解決這個問題,就出現了一些中間格式的字符集,

他們被稱為通用轉換格式,既utf(universal transformation format)。目前存在的utf格式有:

utf-7, utf-7.5, utf-8, utf-16, 以及 utf-32。

big endian和little endian是cpu處理多位元組數的不同方式。例如「漢」字的unicode編碼是6c49。

那麼寫到檔案裡時,究竟是將6c寫在前面,還是將49寫在前面?如果將6c寫在前面,就是big endian。

還是將49寫在前面,就是little endian。

gb2312(2023年)一共收錄了7445個字元,包括6763個漢字和682個其它符號。漢字區的內碼範圍高字

節從b0-f7,低位元組從a1-fe,占用的碼位是((15*16 + 7) - (11*16 + 0) + 1) * (15*16 + 14 ) -(10*16 + 1) + 1) =

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)。

前面提到從ascii、gb2312、gbk到gb18030的編碼方法是向下相容的。而unicode只與ascii相容(更準確

地說,是與iso-8859-1相容),與gb碼不相容。例如「漢」字的unicode編碼是6c49,而gb碼是baba。

unicode也是一種字元編碼方法,不過它是由國際組織設計,可以容納全世界所有語言文字的編碼方案。

unicode的學名是"universal multiple-octet coded character set",簡稱為ucs。ucs可以看作是"unicode

character set"的縮寫。

ucs規定了怎麼用多個位元組表示各種文字。怎樣傳輸這些編碼,是由utf(ucs transformation format)

規範規定的,常見的utf規範包括utf-8、utf-7、utf-16。

ucs有兩種格式:ucs-2和ucs-4。顧名思義,ucs-2就是用兩個位元組編碼,ucs-4就是用4個位元組(實際上

只用了31位,最高位必須為0)編碼。

編碼知識整理

可能很多人事先沒有了解好相關的編碼知識,就把unicode編碼和utf 8編碼混為一談相互比較,認為是兩種不同的編碼,其實不然,unicoe編碼只是乙個字符集,規定了字元和二進位制 的對應關係,好比是乙個大字典,但是對於如何編碼儲存在計算機及其具體實現,unicode編碼並沒有做規定,而utf 8編...

python unicode 編碼整理

unicode 只定義字元對應的數字,但沒有規定這些數字如何儲存起來,比如像中文的 我 字儲存時需要兩個位元組來表示,而英文本母a卻只需要乙個位元組,有些其他的字元可能需要3 4個位元組。utf 8 是對 unicode 編碼儲存的一種實現方式,同樣的還有 utf 16,utf 32。utf 8 是...

字元編碼 unicode編碼

1.ascii american standard code for information interchange 美國資訊交換標準 這是計算機上最早使用的通用的編碼方案。那個時候計算機還只是拉丁文本的專利,根本沒有想到現在計算機的發展勢頭,如果想到了,可能一開始就會使用unicode了。當時絕大...