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