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編碼只是一個標准,並不是具體的編碼。
編碼規則:
- 可以使用多字節標識;
- 各家自定義編碼規則;
- ASCII原有編碼保持不變,比如以前ASCII編碼的表示的值,在新編碼中表示的值一致;
MBCS(Multi-Byte Chactacter System(Set))
歷史背景:ANSI編碼標准和規則出現后,MBCS是對ANSI編碼的實現。
編碼規則:
- 遵循ANSI編碼規則;
- 編碼和解碼規則各家自定義;
應用實例: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)編碼等等