编码详解 ——包含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

猜你喜欢

转载自blog.csdn.net/cymx66688/article/details/83684685