什麼是Ansi,UTF8,Unicode,ASCII編碼

 
關於上述編碼,一直迷迷糊糊,查了些資料,總算大致瞭解了
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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章