【Python 技能树共建】字符编码与解码
Python 字符编码与解码是什么
在 Python3 中字符默认编码是 Unicode 字符,而编码指的是将字符转换成字节流,解码是相反的操作。
在正式开始前,我们还需要梳理一些基本概念
Python 中的字符串
计算机中 8 比特(bit)等于一个字节(byte),8 比特就是 8 位,即一个字节能表示的最大整数是 255(1111 1111)。
如果希望扩大整数范围,需要用到更多的字节,例如 2 个字节就可以表示 65535,4 个字节就能表示 4294967295。
基于上述原理出现了各种编码格式,例如 ASCII
可以表示 256 个字符,但仅支持英文字母,数字和少部分符号,中文的范围要大很多,所以出现了 GB2312 编码(后来升级到了 GBK 编码),可以容纳 6763 个汉字,但放眼世界还不够,还需要更多的字符。
此时 Unicode 字符集就出现了,它将所有的语言都容纳在一起,后续为了在存储和传输数据时节省空间,出现了 UTF8 编码。
怎么用
Python 编码基本使用
通过 ord()
函数获取字符的整数表示,通过 chr()
将整数转换为字符,例如下述代码
既然知道数字可以转换为数字,那十进制和十六进制的数字都可以。
例如 29228
= 722c
,所以 \u722c
也可以使用 Unicode 转码工具进行转换。
Python 编码和解码函数
encode()
和 decode()
分别对应编码和解码函数,en
是编码,de
是解码。
解码操作如下所示:
需要注意编码后输出的内容与字符串类似,就是前面有一个前缀
b
。
乱码
如果编码和解码方法不一致,就会出现乱码问题,例如下述代码
出错信息如下所示:
当出现上述类型的错误时,需要做的就是寻找到正确的原编码,然后进行处理。
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/f465128403bbafd89d65f90e3】。文章转载请联系作者。
评论