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的主要内容,如果未能解决你的问题,请参考以下文章
如何将汉字转换为iso-8859-1的字符串 - PHP进阶讨论
使用 NSString 将 UTF-8 编码转换为 ISO 8859-1 编码