快速理解编码,unicode与utf-8
1.為什么編碼,因為cpu只認識數(shù)字
2.ASCII 一個字符共占7位,用一個字節(jié)表示,共128個字符
3.那么ASCII浪費了最高位多可惜,出現(xiàn)了
ISO-8859-1,一個字節(jié),256個字符,很多協(xié)議的默認編碼
4.中文編碼
GB2132 兩個字節(jié),大陸使用,表示約6k個字符
BIG5 兩個字節(jié),繁體字編碼標準,共表示1.3w個字符
GBK 擴展了GB2132,能表示2w個漢字,不兼容BIG5
Unicode
又稱萬國碼,源于一個組織,一共有兩個組織,都是為了構(gòu)建出一種能表示地球所有字符的編碼,其中一個就是unicode,unicode是準確說是一個字符表,每個字符對應(yīng)一個數(shù)字,稱為碼點,兼容ACSII,即a對應(yīng)數(shù)字96,目前來說16位長度還未占滿,所以有人說unicode字符占兩個字節(jié),這絕對是一種誤解,unicode只是定義了哪個字符對應(yīng)哪個數(shù)字,就這么簡單。
java與unicode
java中為了存儲字符時統(tǒng)一映射關(guān)系,存儲與編碼無關(guān)的unicode碼點,不然一會存一個gbk字符,又來一個big5字符,連打印字符串都有問題了。
utf
那么unicode只是定義映射關(guān)系的話,具體怎么存儲,用幾個字節(jié)存呢
目前有ucs和utf兩種思路。
utf-8 因為節(jié)省流量,互聯(lián)網(wǎng)用的較多
用1,2,3,4個字節(jié)存儲一個字符,通常來說英文字符一個字節(jié),漢子三個字節(jié)
具體格式參考鏈接
uft16與bom
采用2.4字節(jié)存儲,那么為了區(qū)分高字節(jié)在前還是在后,就需要在字節(jié)流前加特殊的BOM字節(jié)表示,utf8不需要bom,只是微軟有這個習慣。
更加詳細的描述推薦 https://www.cnblogs.com/leesf456/p/5317574.html
轉(zhuǎn)載于:https://www.cnblogs.com/lshao/p/9738041.html
總結(jié)
以上是生活随笔為你收集整理的快速理解编码,unicode与utf-8的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP/IP协议的一个具体实现Socke
- 下一篇: 链表问题(6)-----排序