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

  

转载于:https://www.cnblogs.com/ligaofeng/p/11280001.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值