现象&起因
一般我们用以下命令读取ZIP压缩包内的文件列表👇
import zipfile
z = zipfile.ZipFile('xxx.zip', 'r')
l = z.namelist()
如果列表中文件的名称含有中文字符,字符将变成乱码。这是因为zipfile的列表读取功能使用的编码是不常见的“cp437”。
那怎么办呢
若想输出正确的文件名,需要进行编码转换。具体操作如下👇
# 假设文件名保存在变量fname中,转换成UTF-8编码
fname_correct = fname.encode('cp437').decode('utf-8')