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

本文介绍了使用wget通过FTP下载文件时遇到的编码问题,并详细解释了如何将iso8859-1编码转换为utf8编码的过程及原理。文中特别强调了通过gbk编码作为中间桥梁来实现编码转换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中使用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')

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

原理:

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

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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值