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