簡體   English   中英

使用 Python .extractall 解壓文件時出現 Unicode 錯誤

[英]Unicode error unzipping file using Python .extractall

我有我的 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 錯誤。

我該怎么做才能更正我的文件名?

您應該在傳遞給extractall 方法之前解碼您的文件。

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

閱讀模塊中的文檔,他們明確指出:

ZIP 文件沒有正式的文件名編碼。 如果您有 unicode 文件名,則必須在將它們傳遞給 '() 之前將它們轉換為所需編碼的字節字符串。 WinZip 將所有文件名解釋為以 CP437(也稱為 DOS 拉丁語)編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM