最近使用zipfile进行解包过程中遇到了很不舒服的问题,解包之后文件名是乱码的。下面进行简单总结:
首先,乱码肯定是因为解码方式不一样了,zipfile使用的是utf-8和cp437这两种编码方式,这里猜测是因为是歪果仁发布的。
这里其实直接改一下源码里的编码就可以了
在源码文件里直接调出搜索框搜索"cp437"即可找到
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')
7 filename = filename.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.decode("gbk")
只要改掉这两处就可以正常用了
启示:
通常我们使用python写程序时有些东西是网友已经写过的,只需要照搬稍微改一改就可以了,但对于拓展的工具包好像有一种官方的,很正式的感觉,通过这次踩坑,我想不管是谁发布的东西,都不是适合每一个人的,我们应该变通的使用,毕竟任何语言和工具都是为了方便开发和提高效率才出现的,不能死板的按照旧有思路来。
|