大家經常在windows下使用notepad就會發現儲存的時候有編碼類別型選擇ANSI(中國是GB18030)、unicode、unicode big endian、UTF-8,下面進行執行個體分析,如1為文本顯示及不同的字元編碼的HEX顯示:
圖1
1.GB18030
GB18030是中華人民共和國最新的內碼字集及編碼方式,位元組結構採用單位元組、雙位元組、四位元組編碼,其不會重疊混淆。
單位元組:0x00 - 0x7F (對應於ASCII)
雙位元組:0x8140 - 0xFE7E
0xFE80 - 0xFEFE
四位元組:0x81308130 - 0xFE39FE39
針對1的ANSI(GB18030)編碼分析:
圖2
2.Unicode
這裡的Unicode即是字元集也是編碼方式,其為UTF-16小尾編碼,丟失一個位元組整個檔案將無效。
針對1的Unicode編碼分析:
圖3
3.Unicode big endian
這裡的Unicode即是字元集也是編碼方式,其為UTF-16大尾編碼,丟失一個位元組整個檔案將無效。
針對1的Unicode big endian編碼分析:
圖4
4.UTF-8
UTF-8以位元組編碼,沒有大小尾的區分,是ASCII編碼的超集。
位元組流形式:一位元組:0xxxxxxx
兩位元組:110xxxxx 10xxxxxx
三位元組:1110xxxx 10xxxxxx 10xxxxxx
四位元組:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
五位元組:111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
六位元組:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
針對1的UTF-8編碼分析:
圖5
5.趣事
記事本以ANSI格式只儲存“聯通”,雙擊開啟為一個小方塊。
解釋:“聯通”在GB18030中的表示為“C1 AA CD A8”,雙擊開啟的操作,記事本判斷第一個位元組“11000001”為UTF-8的兩位元組流形式,第三個位元組“11001101”也為UTF-8的兩位元組流形式,故判斷為UTF-8字元編碼格式開啟為亂碼。