关于 zip 解压乱码问题

关于 zip 解压乱码问题

zipfile 会将所有文件名用 CP437 来编码

先用 CP437 编码 encode 成 bytes,再以 gbk 格式解码成中文 string

from pathlib import Path
import zipfile

def un_zip(zip1_path,zip_un_path):
"""
压缩到当前 pytcharm 这个文件夹
解压文件.zip
:param zip1_path: 需要解压的文件
:param zip_un_path: 解压文件到哪里
:return:
"""
with zipfile.ZipFile(zip1_path,“r”)as zip_f:
for file in zip_f.namelist():
print(“file 编码前 ==”,file)
# print(“dd”,zip_f.extract(file,zip_un_path))
ex_path = Path(zip_f.extract(file,zip_un_path))
# print(“ex_path”,ex_path)
ex_path.rename(file.encode(‘cp437’).decode(‘gbk’))

if name == “main”:

zip1_path = r"E:/text_zip.zip"

zip_un_path = r"E:/888888/"

un_zip(zip1_path, zip_un_path)