Unicode错误解压缩文件

时间:2017-03-16 21:48:01

标签: python unzip

我有我的zip文件,有一些文件要解压缩。我的函数运行良好,直到我的文件中有一些unicode,如下所示:

- myfile.wav
- myfile2.wav
- my§ile.wav

当我尝试用这个功能解压缩时

with closing(z), zipfile.ZipFile(io.BytesIO(z.content)) as myzip:
                myzip.extractall(local_path)

我收到了一个unicode错误。

如何更正文件名?

1 个答案:

答案 0 :(得分:0)

在传递给extractall方法之前,您应解码文件。

with closing(z), zipfile.ZipFile(io.BytesIO(z.content)) as myzip:
            local_path = local_path.decode('utf-8')
            myzip.extractall(local_path)

阅读模块中的documentation,他们是明确的:

  

ZIP文件没有正式的文件名编码。如果您有unicode文件名,则必须将它们转换为所需编码的字节字符串,然后再将它们传递给'()。 WinZip将所有文件名解释为CP437中编码的文件名,也称为DOS Latin。