1. ASCII和Ansi編碼
字符內碼(charcter code)指的是用來代表字符的內碼.讀者在輸入和存儲文檔時都要使用內碼,內碼分爲
單字節內碼 -- Single-Byte character sets (SBCS),可以支持256個字符編碼.
雙字節內碼 -- Double-Byte character sets)(DBCS),可以支持65000個字符編碼.
前者即爲ASCII編碼,後者對應ANSI.
至於簡體中文編碼GB2312,實際上它是ANSI的一個代碼頁936
2. Unicode
如上,ANSI有很多代碼頁,使用不同代碼頁的內碼無法在其他代碼也正常顯示,這就是爲什麼日文版/繁體中文版遊戲無法在簡體中文平臺直接顯示的原因.
Unicode也是一種字符編碼方法,不過它是由國際組織設計,可以容納全世界所有語言文字的編碼方案.它是一種2字節編碼,能夠提供65536個字符,這個數字是不夠表示所有的字符的(漢語就有55000多字符),所以,通過一個代理對的機制來實現附加的917,476個字符表示,以達到所有字符都具有唯一編碼.
3.Unicode和BigEndianUnicode
這兩者只是存儲順序不同,如"A"的unicode編碼爲65 00
其BigEndianUnicode編碼爲00 65
4. UTF-8
這是爲傳輸而設計的編碼,其系列還有UTF-7和UTF-16
其中UTF-16和Unicode編碼大致一樣, UTF-8就是以8位爲單元對Unicode進行編碼。從Unicode到UTF-8的編碼方式如下:
Unicode編碼(16進制) UTF-8 字節流(二進制)
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
例如“漢”字的Unicode編碼是6C49。6C49在0800-FFFF之間,所以肯定要用3字節模板了:1110xxxx 10xxxxxx 10xxxxxx。將6C49寫成二進制是:0110 110001 001001, 用這個比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。