列表格式显示
广告招商中...... 联系方式!
私信 +好友
#
如果在zipfile.ZipFile中得到的文件名有中文和日文,很可能是乱码,因为
在zip标准中,文件名的编码不是unicode,但是根据系统默认的字符集可能会被各种软件使用(这是一个猜测),当根据file flag检测到zipfile时,仅支持 cp437 和 utf。 -8。
具体zipfile模块中的源代码如下:
if?flags?&?0x800: ????#?UTF-8?file?names?extension ????filename?=?filename.decode(utf-8)else: ????#?Historical?ZIP?filename?encoding ????filename?=?filename.decode(cp437)
可以看到,除了编码正确识别为utf8时,会被识别解码为cp437编码,但如果实际是gbk等编码,就会变成乱码。所以解决方法是在解码为cp437后手动转换为正确的编码。
import?os def?an_garcode(dir_names): ????"""anti?garbled?code""" ????os.chdir(dir_names) ????for?temp_name?in?os.listdir(.): ????????try: ????????????#使用cp437对文件名进行解码还原 ????????????new_name?=?temp_name.encode(cp437) ????????????#win下一般使用的是gbk编码 ????????????new_name?=?new_name.decode("gbk") ????????????#对乱码的文件名及文件夹名进行重命名 ????????????os.rename(temp_name,?new_name) ????????????#传回重新编码的文件名给原文件名 ????????????temp_name?=?new_name ????????except: ????????????#如果已被正确识别为utf8编码时则不需再编码 ????????????pass????????if?os.path.isdir(temp_name): ????????????#对子文件夹进行递归调用 ????????????an_garcode(temp_name) ????????????#记得返回上级目录 ????????????os.chdir(..)an_garcode(os.getcwd())
众多
本页Html网址:/htmlsoft/619344.html
本页aspx网址:/soft.aspx?id=619344&bianhao=202402181407514798_84324&kind1=&kind2=
最后访问时间:2024-03-28 16:49:46
上一篇:Windows上WinRAR.exe命令行参数说明 超全
下一篇:python3_zipfile_创建压缩文件_读写注释
增加