1. 程式人生 > >快速理解編碼,unicode與utf-8

快速理解編碼,unicode與utf-8

logs 聯網 長度 unicode 為什麽 互聯網 什麽 描述 com

1.為什麽編碼,因為cpu只認識數字
2.ASCII 一個字符共占7位,用一個字節表示,共128個字符
3.那麽ASCII浪費了最高位多可惜,出現了
ISO-8859-1,一個字節,256個字符,很多協議的默認編碼
4.中文編碼
GB2132 兩個字節,大陸使用,表示約6k個字符
BIG5 兩個字節,繁體字編碼標準,共表示1.3w個字符
GBK 擴展了GB2132,能表示2w個漢字,不兼容BIG5

Unicode
又稱萬國碼,源於一個組織,一共有兩個組織,都是為了構建出一種能表示地球所有字符的編碼,其中一個就是unicode,unicode是準確說是一個字符表,每個字符對應一個數字,稱為碼點,兼容ACSII,即a對應數字96,目前來說16位長度還未占滿,所以有人說unicode字符占兩個字節,這絕對是一種誤解,unicode只是定義了哪個字符對應哪個數字,就這麽簡單。

java與unicode
java中為了存儲字符時統一映射關系,存儲與編碼無關的unicode碼點,不然一會存一個gbk字符,又來一個big5字符,連打印字符串都有問題了。

utf
那麽unicode只是定義映射關系的話,具體怎麽存儲,用幾個字節存呢
目前有ucs和utf兩種思路。
utf-8 因為節省流量,互聯網用的較多
用1,2,3,4個字節存儲一個字符,通常來說英文字符一個字節,漢子三個字節
具體格式參考鏈接
uft16與bom
采用2.4字節存儲,那麽為了區分高字節在前還是在後,就需要在字節流前加特殊的BOM字節表示,utf8不需要bom,只是微軟有這個習慣。

更加詳細的描述推薦  https://www.cnblogs.com/leesf456/p/5317574.html

快速理解編碼,unicode與utf-8