Python - zipfile 乱码问题解决

  最近使用zipfile进行解包过程中遇到了很不舒服的问题,解包之后文件名是乱码的。下面进行简单总结:

  首先,乱码肯定是因为解码方式不一样了,zipfile使用的是utf-8cp437这两种编码方式,这里猜测是因为是歪果仁发布的。

  这里其实直接改一下源码里的编码就可以了

  在源码文件里直接调出搜索框搜索"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写程序时有些东西是网友已经写过的,只需要照搬稍微改一改就可以了,但对于拓展的工具包好像有一种官方的,很正式的感觉,通过这次踩坑,我想不管是谁发布的东西,都不是适合每一个人的,我们应该变通的使用,毕竟任何语言和工具都是为了方便开发和提高效率才出现的,不能死板的按照旧有思路来。

  

posted @ 2019-08-01 00:14  lgf133  阅读(2034)  评论(0编辑  收藏  举报