Computer Science - Background - ASCII, Unicode & UTF-8 (in Python)
Background - ASCII, Unicode & UTF-8 (in Python)
1.基本概念:
(1)字符集:已编号字符的有序集合,包括字符编号和字符,对计算机没有直接意义
(2)编码方案:将字符集中的字符编号与二进制字符编码进行对应的映射
(3)编码单位(码元):计算机处理字符时一次读取的二进制位数
(4)编码:按照编码方案,由字符转换而来的二进制数据。在已知编码单位和映射关系时,计算机可以对字符进行编码,也可以对编码进行解码
2.ASCII、Unicode & UTF-8的实质:
(1)ASCII:字符集以及编码方案,用0~127对128个字符做了编号,用8位作为编码单位,简单地把十进制编号转换而成的二进制数据作为编码
(2)广义Unicode:
①Unicode:字符集,以16位二进制数对世界上几乎全部字符做了编号
②UTF-8:编码方案,以8位(一个字节)作为编码单位,按照一定规则(每字节前几位固定)将一个字符编码为1到4个字节
3.ASCII、Unicode & UTF-8的应用背景:
(1)ASCII:只能表示英文文本
(2)Unicode:表示多语言文本,兼容ASCII
(3)UTF-8:传输、存储用Unicode表示的多语言文本,去除Unicode中的冗余部分
4.Python描述:
(1)bytes和str类型:
①bytes:编码比特流,如0101101000101101
②str:字符串,如’Python’
变量的类型可以用type()查看,或者以输出时是否带有b’’来区分
(2)encode和decode方法:
①encode将str以声明的编码方案转换为bytes,也就是编码
②decode将bytes以声明的编码方案转换为str,也就是解码
5.Python中的字符操作:
(1)在将字符串存入硬盘和从硬盘中读取字符串的过程中,自动进行编码和解码
(2)为了避免乱码问题,应坚持使用UTF-8方案