python3解决解压zip文件是文件名乱码问题
来源:互联网 发布:深圳cnc数控编程培训 编辑:程序博客网 时间:2024/06/05 20:50
在zip标准中,对文件名的 encoding 用的不是 unicode,而可能是各种软件根据系统的默认字符集来采用(此为猜测),因此zipfile中根据文件 flag 检测的时候,只支持 cp437 和 utf-8。具体就是查找 zipfile.py 源代码找到下面的代码:
1: if flags & 0x800:
2: # UTF-8 file names extension
3: filename = filename.decode('utf-8')
4: else:
5: # Historical ZIP filename encoding
6: filename = filename.decode('cp437')
可见编码被正确识别为utf8时的情况外,都会被识别并decode为cp437编码,但如果实际是gbk等其他编码时就变为乱码了。所以解决的方法在于被decode为cp437后重新再手动转为正确的编码。具体代码如下:
#修改代码if flags & 0x800: # UTF-8 file names extension filename = filename.decode('utf-8')else: # Historical ZIP filename encoding filename = filename.decode('cp437') #修改 filename = filename.encode("cp437").decode('gbk')
后面一处同样如此修改
if zinfo.flag_bits & 0x800: # UTF-8 filename fname_str = fname.decode("utf-8")else: fname_str = fname.decode("cp437") #修改 fname_str = fname_str.encode("cp437").decode('gbk')
亲测有效
阅读全文
0 0
- python3解决解压zip文件是文件名乱码问题
- ubuntu下解决解压zip文件中文文件名乱码问题
- linux下解压zip文件时,文件名乱码的解决
- linux下解压zip文件时,文件名乱码的解决
- Ubuntu 14.04上解决zip格式文件解压文件名乱码问题
- 【成功解决】ubuntu 12.04 解压 zip 7z rar jar 文件,文件名中文乱码的问题
- 【成功解决】ubuntu 12.04 解压 zip 7z rar jar 文件,文件名中文乱码的问题
- Ubuntu下解决解压zip文件名乱码
- ZIP文件解压后文件名乱码解决办法
- Ubuntu中解决解压zip文件中文乱码问题
- 解决ubuntu 对zip文件解压乱码问题
- Ubuntu下解决 zip 文件解压乱码的问题
- [linux]zip文件解压之后文件和文件名乱码解决方法
- 解决linux下 解压 文件 文件名乱码
- ubuntu下解压zip文件出现文件名乱码
- nodejs adm-zip 解压文件 中文文件名乱码
- ubuntu解压zip文件乱码问题
- ubuntu解压zip文件中文乱码问题
- 1120(toj)
- TensorFlow学习笔记2:基本运算
- CSS样式规则语法
- [JSP]javabeans/与JavaBean相关的动作元素
- Java的继承
- python3解决解压zip文件是文件名乱码问题
- Struts2
- Fast Approximate Energy Minimization via Graph Cuts
- 排序算法——冒泡排序
- 设计模式之装饰者模式
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)
- Vim常见问题与总结(二)
- Architecting HBase Applications.pdf 英文原版 免费下载
- CSS注释语法