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

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

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

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

utf
那麼unicode只是定義映射關係的話,具體怎麼存儲,用幾個字節存呢
目前有ucs和utf兩種思路。
utf-8 由於節省流量,互聯網用的較多
用1,2,3,4個字節存儲一個字符,一般來講英文字符一個字節,漢子三個字節
具體格式參考連接
uft16與bom
採用2.4字節存儲,那麼爲了區分高字節在前仍是在後,就須要在字節流前加特殊的BOM字節表示,utf8不須要bom,只是微軟有這個習慣。code

更加詳細的描述推薦  http://www.javashuo.com/article/p-axnhjzqz-mr.htmlhtm

相關文章
相關標籤/搜索