一次讲清UNICODE
文章目錄
- UNICODE
- UTF-16
- UTF-8
- 舉例
- 課后補充
- BOM(Byte Order Mark)
UNICODE
什么是UNICODE?
這是一個編碼方案,說白了就是一張包含全世界所有文字的一個編碼表,只要這個世界上存在的文字符號,統統給你一個唯一的編碼:
Unicode編碼范圍:0~0x10FFFF,可以容納100多萬個符號
UNICODE的問題:
UNICODE只是一個符號集,它只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲
UTF-16
UTF-16編碼以16位無符號整數為單位,注意是16位為一個單位,不表示一個字符只有16位
。這個要看字符的UNICODE編碼處于什么范圍而定,有可能是2個字節,有可能是4個字節,現在機器上的unicode編碼一般指的就是UTF-16
注意:兩個字節為1個存儲單位。在UTF-16中字符只有2個字節或者4個字節(超過2個字節就變4個字節)
UTF-8
UTF-8:(網絡傳輸節省流量)
Unicode編碼(16進制) UTF-8字節流(二進制)
000000-00007F ------> 0xxxxxxx
000080-0007FF ------> 110xxxxx 10xxxxxx
000800-00FFFF ------> 1110xxxx 10xxxxxx 10xxxxxx
010000-10FFFF ------> 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
舉例
中國的中字,UTF-16---->4E2D
在UTF-8里面:(中國的中字)
因為4E2D對應第三個區間(十六進制),所以往下劃分:
000800-00FFFF ------> 1110xxxx 10xxxxxx 10xxxxxx
把前綴都統統去掉后:
1110 (0100)10(11 1000) 10(10 1101)
所以UTF-8有效數據為:
0010 1110 0010 1101
即十六進制 4E2D
課后補充
也就是經常看到的前綴(開頭)會出現這種字符FE FF FF FE
(很少見到:)EF BB BF
如何判斷文本文件的存儲格式?(UTF-16的時候會區分大小端存儲,也就是L或者B)
BOM(Byte Order Mark)
UTF-8 ------> EF BB BF UTF-16LE ------> FF FE UTF-16BE ------> FE FF總結
以上是生活随笔為你收集整理的一次讲清UNICODE的全部內容,希望文章能夠幫你解決所遇到的問題。