1. 程式人生 > 其它 >字元編碼發展歷程

字元編碼發展歷程

字元編碼發展歷程,ASCII、ASCII擴充套件、ANSI編碼、MBCS、Unicode編碼、UTF-8

ASCII(American Standard Code for Information Interchange)編碼

歷史背景:計算機在小範圍內使用,如美國;

編碼規則:用一個位元組中的7個bit位表示,範圍為0x00~0x7F,可用於控制打字機,0~0x20用於控制,後面包括標點、數字、字母等符號。

ASCII擴充套件編碼

歷史背景:計算機在更多歐洲國家使用,ASCII不能夠表示更多的歐洲字元;

編碼規則:第8個bit位也用於表示字元,擴充套件範圍(0x80~0xFF),表達範圍0x00~0xFF。

ANSI(American National Standard Institite )編碼

歷史背景:計算機在亞洲國家使用,出現很多象形文字,如中文、日文、韓文等,ASCII擴充套件不能滿足要求。

編碼思想:根據自身特徵,自定義文字編碼,並得到ANSI認可。這樣會出現多套編碼,每套編碼都遵循ANSI編碼規則,如GB2312(簡體中文)、BIG5(繁體中文)、JIT(日文)。

注意事項:ANSI編碼只是一個標準,並不是具體的編碼。

編碼規則:

  1. 可以使用多位元組標識;
  2. 各家自定義編碼規則;
  3. ASCII原有編碼保持不變,比如以前ASCII編碼的表示的值,在新編碼中表示的值一致;

MBCS(Multi-Byte Chactacter System(Set))

歷史背景:ANSI編碼標準和規則出現後,MBCS是對ANSI編碼的實現。

編碼規則:

  1. 遵循ANSI編碼規則;
  2. 編碼和解碼規則各家自定義;

應用例項:GB2312(簡體中文)、BIG5(繁體中文)、JIT(日文)等的具體編碼

CodePage

歷史背景:根據ANSI通過MBCS實現了多套字符集,一個系統、程式要支援多種字元編碼是不是要打多個包呢。

解決方法:每套字符集用一個程式碼表示,該程式碼稱為內碼表CodePage,比如系統裝了多套字符集(如GB2312、BIG5),通過程式碼快速實現切換到GB2312。

Unicode編碼

歷史背景:CodePage和各種字符集解決了一個作業系統、程式內保證使用同一套字符集,但是統一個系統、程式不能同時使用多套字符集,比如在記事本同時顯示中文和韓文。

編碼思想:大統一,一本容納所有字元的大字典,摒棄各家自己實現字符集編碼。

注意事項:Unicode是一個字符集碼錶,不是具體的實現。

編碼規則:範圍0-0x10FFFF,至少3個位元組儲存,還在不斷升級完善中。

Unicode編碼實現

歷史背景:Unicode編碼已提出,具體實現未落地

應用例項:UFT-8、UTF-16(UCS-2)、UTF-32(UCS-4)編碼等等