基本概念

字符:表示数据和信息的字母、数字或其他符号。在电子计算机中,每一个字符与一个二进制编码相对应。

字符的标识(码位):是0-1114111的数字,在Unicode标准中以4-6个十六进制数字表示,而且加前缀“U+”。例如,字母A的码位是U+0041,欧元符号的码位是U+20AC.

字符的具体表述取决于所用的编码。编码是在码位和字节序列之间转换时使用的算法。在UTF-8编码中,A(U+0041)的码位编码成单个字节\x41,而在UTF-16LE编码中编码成两个字节\x41\x00。欧元符号(U+20AC)在UFT-8编码中是三个字节\xe2\x82\xac,而在UTF-16LE编码中编码成两个字节\xac\x20。

编码:把码位转换成字节序列(通俗来说:把字符串转换成用于存储或传输的字节序列,python中是.encode())

解码:把字节序列转换成码位(通俗来说:把字节序列转换成人类可读的文本字符串,python中是.decode())

>>> s = 'café'
>>> len(s) # Unicode字符数量
4
>>> b = s.encode('utf8') # 编码为bytes
>>> b
b'caf\xc3\xa9'
>>> len(b) # 字节数
5
>>> b.decode('utf8') # 解码
'café