Uncategorized · 1月 19, 2022 0

解决Python3使用zipfile模块输出文件名是乱码的问题

现象&起因

一般我们用以下命令读取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')