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寫程序時有些東西是網友已經寫過的,只需要照搬稍微改一改就可以了,但對於拓展的工具包好像有一種官方的,很正式的感覺,通過這次踩坑,我想不管是誰發布的東西,都不是適合每一個人的,我們應該變通的使用,畢竟任何語言和工具都是為了方便開發和提高效率才出現的,不能死板的按照舊有思路來。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM