zipfile默認對於文件名編碼只識別cp437和utf-8
對於采用其他編碼方式的文件,zipfile解壓出來的就會是亂碼
我們可以先把它encode成cp437然后再decode成GBK
最后在把文件重命名回去即可。
import zipfile from os import rename # 解壓 with zipfile.ZipFile('test.zip', 'r') as fd: for i in fd.namelist(): gbkfilename = i.encode('cp437').decode('GBK') fd.extract(i, 'testdir', pwd='testpassword'.encode('GBK')) rename(''.join(['testdir/', i]), ''.join(['testdir/', gbkfilename]))