python3中使用zipfile解压zip文件,解压后存在中文文件名存在乱码问题,其主要原因是:在zip标准中,对文件名的 encoding 用的不是 unicode,而可能是各种软件根据系统的默认字符集来采用(此为猜测),而zipfile中根据文件 flag 检测的时候,只支持 cp437 和 utf-8。
通过查证各种资料,该问题有2种解决方法,如下所示:
第一种方式:修改zipfile.py中的源码,使的被decode为cp437后再手动转为正确的编码(亲测有效)。如下所示:
修改zipfile.py中第一处:
修改zipfile.py中第二处:
参见:https://blog.csdn.net/tian544556/article/details/78635840
https://blog.csdn.net/chouzhou9701/article/details/80146766
第二种方式:首先对压缩包进行解压,然后对生成的文件名是乱码的文件,进行转码重命名
参见:https://blog.csdn.net/mp9105/article/details/80288549
https://blog.csdn.net/ducklikejava/article/details/81039797