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]))

  

相关文章:

  • 2022-02-07
  • 2021-07-19
  • 2021-05-16
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-28
  • 2021-10-08
  • 2022-12-23
  • 2021-12-10
相关资源
相似解决方案