用Python转码恢复乱码中文

一个在Python中将中文乱码文字转码恢复的问题

先说下来历和需求,Mac系统中的压缩包,在Windows系统下的一些压缩软件解压后,中文文件名常会变成乱码,如何用Python将文件名改回来,这是个问题。当然,最省事的方法是换个压缩软件就行,所说winrar6.0以上就没这问题了。可是,这问题引起了我对如何用python来解决的兴趣,如是折腾了一晚。

问题产生的原因

Mac系统默认中文字符集是utf-8,windows默认的是gbk,解压软件强制把utf-8编码的中文字符用gbk编码显示出来,当然是一堆乱码了。清楚了原因,解决的思路也就简单明了了。

直接来代码吧

## 比如Mac中有这个文件:'这是一个文件.docx'
## windows下解压软件强制错误转码后,会显示为:'杩欐槸涓涓鏂囦欢.docx'
## 这个过程相当于用pyhon执行了以下操作:
mac=file.encode('utf8').decode('gbk',errors='ignore')

## 我们用Python再强制转码回来就行了:
win=mac.encode('gbk').decode('utf8',errors='ignore')
print(win)
## '这是文件.docx'

补充说明

这里需要说明的是,全角半角字符混合的情况下,这么简单强制转换并不能完全恢复原样字符串,我们不了解解压软件强制转换的参数,所以只能采用’ignore’保证代码正常运行,但结果是一些字符可能会在转换过程中被舍弃,比如上面的代码转换回来后,结果只显示为:‘这是文件.docx’,算是变成我们能认识的文字,并非原样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值