編碼詳解 ——包含ASCII、GBK、unicode、UTF-8等

地址鏈接:https://mp.csdn.net/postedit/83684685

編碼集是什麼?

用於圖形界面顯示對應的編碼集,其實就是圖形

一、ASCII

最早起實現圖形界面,計算機中的字節對應的字符集,只使用了0x00 - 0x7F, 1個字節

 

二、ISO-8859-1

西歐字符集,還有一些ISO-8859-2,ISO-8859-3等等

計算機發展到歐洲後,發現ASCII碼沒有包含他們特有的字符

所以兼容ASCII碼,進行擴展,從0x80 - 0xFF,1個字節

 

三、GB2312

中文簡體編碼集,計算機發展到中國後創造的字符集

兼容ASCII碼,是2個字節。所有的2個字符的內容(中文、全角符號等)高位字節和低位字節必須都大於0x7F

 

四、GBK

中文編碼集,包括繁體

兼容GB2312,2個字節。只需要高位字節大於0x7F,低位字節不限制

 

五、GB18030

1個字節、2個字節、4個字節三種方式對字符編碼,兼容GBK

 

六、BIG5

臺灣的繁體中文字符集,2個字符

 

七、Unicode

每種語言中的每個字符設定了統一併且唯一的二進制編碼

共有17個平面

其中有一個BMP基礎平面,是2個字節,一般的中文也是2個字節

其他16個平面都是4個字節,不兼容ASCII,會將ASCII的1個字節變成2個字節,增大一倍的內存

example: 你好啊 = \u4f60\u597d\u554a

 

八、UTF-8:UTF-8、UTF-16、UTF-32

可變字節:1個字節,2個字節,3個字節,4個字節,中文是3個字節,兼容ASCII

A. 小於0x80, 對應ASCII

B. 多字節:

    讀一個字節,大於0x7Fz之後,展開爲二進制

字節的高位有幾個連續的1,那麼就代表需要取幾個字節

110* ****:    代表的是2個字節表示一個字符

1110 ****: 代表的是3個字節表示一個字符

1111 0***: 代表的是4個字節表示一個字符

後續跟着的字節,前面2位必須是10,這2個無實際意義

example:

漢字: 中

對應utf-8的字節: b'\xe4\xb8\xad'

展開:   e         4      b          8         a       d

          1110   0100   1011  1000  1010  1101

去掉第一個字節的表示位數的1110和後續的字節的高2位10

                   0100        11  1000       10  1101

每8位進行拼接: 

                  0100        1110         0010    1101

                      4             e               2          d

對應的Unicode編碼就是: \u4e2d

 

ending...

date: 2018-11-03

author: cymx66688

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章