目录
计算机是以二进制的字节串方式存储信息的,我们能看到的内容是以字符串的方式显示的。二进制以8位的长度为一个字节,将不同的字节对应各自的ASCII文字符号,这样形成的一种规范称之为字符集。国际标准组织将世界上所有的文字符号统一制定,形成unicode字符集。字符集中每个不同的符号都对应不同的数字。最常见的unicode字符编码规范是utf8和utf16,对于中文也有中文字符集gbk。编解码速记:“DBES”——'decode bytes,encode strings'。
字符串编码
python语言在存储和网络传输的时候,通常使用字符串的 encode() 方法,括号中的参数为指定编码方式,编码为一个bytes对象。Bytes对象的底层就是使用一个个字节存储的字符串中的文字。字符串使用不同的编码方式,生成的bytes结果也会有所不同,如下:
# 使用gbk、utf-8、utf-16三种不同的编码结果
print('中国'.encode('gbk'))
print('中国'.encode('utf8'))
print('中国'.encode('utf16'))
字节串解码
解码是对编码成的字节串转变为对应的字符串的方法,解码的方法是 decode() ,后面指明解码的方式。注意:解码方式一定要和编码方式相同,不然会出现乱码或报错。如下:
# 将上面代码中用utf8编码的结果字节串使用utf16解码
print(b'\xe4\xb8\xad\xe5\x9b\xbd'.decode('utf-16'))
# 用utf16编码的结果字节串使用utf8解码
print(b'\xff\xfe-N\xfdV'.decode('utf-8'))
unicode数字和字符的转换
数字转换为字符,使用函数:chr()
字符转换为数字,使用函数:ord()
print(chr(65))
print(ord('家'))