如何在压缩文件中使用非ASCII文件名,并在Python 2.4中使用ZipFile提取它们?

时间:2010-11-24 16:29:43

标签: python character-encoding zipfile

我在名为öl_och_ål_är_gott.zip的zip存档中有一个文件öl_och_ål_är_gott.txt。存档不是使用zipfile创建的。它可能来自任何能够创建zip存档的软件。

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 个答案:

答案 0 :(得分:1)

正如文档所述,ZIP文件没有正式的文件名编码。如果您有Unicode文件名(如您的情况),则必须在传递它们之前将它们转换为所需编码的字节字符串。

DOCS

虽然我不知道为什么它不适合你。

>>> 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盒子上。