Python的编码和解码
Python的编码和解码
1 什么是编码和解码
- 编码是指将字符转换为字节流的过程,解码则是相反的操作。Python3字符的默认编码是Unicode。
2 编码的产生
- 大家都知道在计算机中一个字节(byte)为8个比特位(bit),能表示的最大整数为255(11111111),2个字节可表示的最大整数为65535(11111111 11111111)。
- 基于上述原理就有了各种编码格式,如ASCII可表示256个字符(英文字母、数字、少部分符号),但中文的范围要更大,因此出现了GB2312、GBK、GB18030等编码用于表示中文,但还不够,比如一些生辟字就表示不了,此时 Unicode 字符集出现了,它将所有的语言都容纳在一起,后续为了在存储和传输数据时节省空间,出现了 UTF8 编码。
3 Python编码的使用
ord()函数获取字符的整数,chr()函数将整数转换为字符
>>> ord('A')
65
>>> chr(65)
'A'
>>> ord('学')
23398
>>> chr(23398)
'学'
十六进制的使用,10的十六进制是a
>>> int('a', 16)
10
>>> chr(10)
'\n'
>>> chr(int('a',16))
'\n'
4 Python编码和解码函数
- 编码函数:encode(),示例如下:
>>> en_code = '学习'.encode('utf-8')
>>> print('编码结果:', en_code)
编码结果: b'\xe5\xad\xa6\xe4\xb9\xa0'
- 解码函数:decode(),示例如下:
>>> de_code = en_code.decode('utf-8')
>>> print('解码结果:', de_code)
解码结果: 学习
5 乱码
如果编码和解码所使用的编码不一致就会出现乱码,示例如下:
>>> en_code = '学习'.encode('gbk')
>>> print('编码结果:', en_code)
编码结果: b'\xd1\xa7\xcf\xb0'
>>> de_code = en_code.decode('utf-8')
>>> print('解码结果:', de_code)
解码结果: ѧϰ