地址鏈接: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