2
我想添加幾個文件到一個zip的Python的zipfile庫。 問題在於壓縮的文件名,其中包含特殊字符(utf-8)。python zipfile編碼爲arcname
下面是一個基本代碼:
#!/usr/bin/env python
import zipfile
infilename = "test_file"
outfilename = "test.zip"
filename = u'Conf\xe9d\xe9ration.txt'
if __name__ == '__main__':
f = open(outfilename, "w")
archive = zipfile.ZipFile(f, "w", zipfile.ZIP_DEFLATED)
archive.write(infilename, filename.encode("CP437"))
archive.close()
f.close()
文件生成不能正確地與每一個拉鍊提取閱讀:
的Ubuntu 10.04 & 11.10:CONF d ration.txt
?無法提取文件:「警告:文件名不匹配:Conf \?d \?ration.txt」Wi ndows XP & 7:Confédération.txt
文件可以被理解的MacOSX(獅子):ConfÇdÇration.txt
文件可以被理解
我嘗試沒有編碼CP437改變只有一行於:
archive.write(infilename, filename)
這一次的Ubuntu仍然具有同樣的問題,Windows提供了 「CONF +®d+®ration.txt」 和MacOSX的完美的作品。
有人知道(pythonic)跨平臺解決方案嗎?
謝謝!