如何在Python 2.4中使用ZipFile处理带有非ASCII文件名的压缩文件?

0 投票
1 回答
1826 浏览
提问于 2025-04-16 07:33

我有一个文件叫做 öl_och_ål_är_gott.txt,它在一个名为 öl_och_ål_är_gott.zip 的压缩包里。这个压缩包不是用 zipfile 创建的,可能是用任何能创建压缩包的软件做的。

src = open(file_path, "rb" )
zip_file = ZipFile(src)
for info in zip_file.infolist():
    print info.filename
    ...

打印出来的是:

”l_och_†l_„r_gott.txt

我该怎么做才能让 zipfile 按我想要的方式显示这个名字呢?

1 个回答

1

根据文档的说明,ZIP文件没有官方的文件名编码标准。如果你的文件名是Unicode格式(就像你提到的那样),你需要在传递之前把它们转换成你想要的字节字符串格式。

文档链接

不过,我不太清楚为什么在你那儿不管用。

>>> src = open('/Desktop/test.zip', 'rb')
>>> zip_file = zipfile.ZipFile(src)
>>> for info in zip_file.infolist():
...     print info.filename
... 
öl_och_ål_är_gott

在我的Ubuntu系统上。

撰写回答