python解压zip文件出现乱码文件名,python文件乱码
在zipfile中获得的文件名。ZipFile有中文和日文字符,但它可能是乱码,因为
在zip标准中,文件名的编码不是unicode,可能是各种软件根据系统默认字符集采用的(这是猜测)。但是,zipfile在根据文件标志进行检测时,只支持cp437和utf-8。
特定zipfile模块中的源代码如下:
ifflags0x800:
# UTF-8文件名扩展
filename=filename . decode( utf-8 )
else:
#HistoricalZIPfilenameencoding
filename=filename . decode( cp437 )除了可见代码被正确识别为utf8时,会被识别解码为CP 437代码,但如果实际上是gbk等代码,就会变成乱码。所以解决的办法在于解码成cp437后,再手动转换成正确的代码。
在实际过程中,可以用zipfile对已经解压的文件进行解压,然后直接对解压文件夹中的乱码文件进行重命名。具体实施过程如下:
进口货
defan_garcode(目录名称):
防篡改代码
os.chdir(目录名)
fortemp_nameinos.listdir( . ):
尝试:
#使用cp437解码并恢复文件名
new _ name=temp _ name . encode( CP 437 )
#win一般使用gbk编码。
新名称=新名称.解码( gbk )
#重命名乱码文件名和文件夹名。
os.rename(临时名称,新名称)
#将重新编码的文件名恢复为原始文件名
临时名称=新名称
例外:
#如果已被正确识别为utf8编码,则不需要编码。
及格
ifos . path . isdir(temp _ name):
#对子文件夹的递归调用
一个代码(临时名称)
#记得返回上级目录
os.chdir( . )
An_garcode(os.getcwd())很多python的培训视频都在流行的IT软件开发工作室。欢迎在线学习!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。