python中把ISO-8859-1编码转化为UTF-8

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中把ISO-8859-1编码转化为UTF-8相关的知识,希望对你有一定的参考价值。

参考技术A 当我们爬取一些页面的中文信息时,会出现如下情况:

爬取的中文编码格式不是UTF-8,无法正常显示,查看编码格式:

先编码

encode(编码):按照某种规则将“文本”转换为“字节流”,unicode转化为str

decode(解码):将“字节流”按照某种规则转换成“文本”,str转化为unicode

s.decode(' '):运行会出错。因为python 3中的str类型对象有点像Python 2中的unicode, 而decode是将str转为unicode编码,所以str仅有一个encode方法,调用这个方法后将产生一个编码后的byte类型的字符。
AttributeError: 'str' object has no attribute 'decode'
AttributeError: 'bytes' object has no attribute 'encode'

python 编码问题

中文iso8859-1编码转utf8编码

str.encode("gbk").decode(‘gbk‘).encode(‘utf-8‘)

原理:

utf8编码的文本可以用iso8859-1的编码表示,但是反过来不行。iso8859-1是单字节编码,而utf8是定长编码,从utf8转化成iso8859-1相当于是高精度转化成低精度,造成精度丢失,所以不可逆。根本原因是因为utf8中文,在iso8859-1没有匹配的位置。

而gbk是不定长编码,英文数字的字符编码规则跟iso8859-1是一样的,所以gbk是兼容iso8859-1编码的,这两者可以相互转换。

以上是关于python中把ISO-8859-1编码转化为UTF-8的主要内容,如果未能解决你的问题,请参考以下文章

Python ISO-8859-1 编码

在 Python 中使用 ISO 8859-1 编码字符

如何将汉字转换为iso-8859-1的字符串 - PHP进阶讨论

使用 NSString 将 UTF-8 编码转换为 ISO 8859-1 编码

请教mp3ID3V2编码问题:选择utf-16和 iso-8859-1有啥区别?哪个更常用更好?

使用来自网络的编码 ISO-8859-1 解析 XML