使用过Python
中的标准库zipfile
解压过zip
格式压缩包的朋友们,可能遇到过,当压缩文件中的目录或文件名中包含中文等常见unicode
字符时,典型如下面的例子:
使用zipfile
的extract()
或extractall()
方法直接解压时,产生的解压结果名充斥着乱码,这一点我们通过调用namelist()
方法就可以看出来:
from zipfile import ZipFile
# 读入压缩包文件
file = ZipFile('示例压缩包.zip')
# 查看压缩包内目录、文件名称
file.namelist()
这是因为zipfile
中针对压缩包内容的编码兼容性差,但我们可以通过下面的函数自行矫正:
def recode(raw: str) -> str:
'''
编码修正
'''
try:
return raw.encode('cp437').d