python 中文iso8859-1编码转utf8编码

来源:互联网 发布:mac版photoshop快捷键 编辑:程序博客网 时间:2024/06/06 20:36

在项目中使用wget 进行ftp下载文件时,由于ftp下载默认的是ascii模式,下载的文件编码是iso8859-1。


在python3中直接使用open函数的话,需要设置编码,不然会报错。

open("08M0063639_20170710.txt","r",encoding='iso8859-1')

这样做,假如文本是数字或者字母的时候,没有什么影响。但文本是中文的时候,获取的数据是iso8859-1编码的,进行数据操作时会出现乱码。

所以要将数据转化为utf8编码

uft_str = str.encode("iso-8859-1").decode('gbk').encode('utf8').decode('utf8')

先将文本转化成gbk编码,然后在从gbk编码变成utf8编码。

原理:

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

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

阅读全文
1 0
原创粉丝点击