Skip to content
大纲

Python 中的编码问题

爬取的所有网页无论何种编码格式,都应转化为 utf-8 格式进行存储, 与源代码编码格式不同会出现乱码。

UTF-8 通用性比较好,是用以解决国际上字符的一种多字节编码, 它对英文使用 8 位(即一个字节),中文使用 24 位(三个字节)来编码。

UTF-8 编码的文字可以在各国各种支持 UTF8 字符集的浏览器上显示, 也就是必须两者都是 utf-8 才行。

gbk 是是国家编码,通用性比 UTF8 差,GB2312 之类的都算是 gbk 编码。 GBK 包含全部中文字符;UTF-8 则包含全世界所有国家需要用到的字符。

Unicode 是一种二进制编码,所有 utf-8gbk 编码都得通过 Unicode 编码 进行转译,即 utf-8gbk 编码之间不能直接转换

decode -----把当前字符解码成 Unicode 编码 encode -----把 Unicode 编码格式的字符编码成其他格式的编码

Python 默认使用 Unicode 字符集,做编码转换时,要把 Unicode 作为中间编码, 先 decode(解码)成 Unicode 编码,再 encode(编码)成其他编码。

Unicode 编码不能直接 encode 成其他编码,否则会报错

转换字符编码

如打印网页源代码出现乱码,先用 gbk 编码,忽略掉非法字符,然后再译码

python
print(r.text.encode('GBK','ignore').decode('GBk'))