91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決python3中解壓zip文件是文件名亂碼的問題

發布時間:2020-08-22 14:59:52 來源:腳本之家 閱讀:251 作者:tian544556 欄目:開發技術

在zip標準中,對文件名的 encoding 用的不是 unicode,而可能是各種軟件根據系統的默認字符集來采用(此為猜測),因此zipfile中根據文件 flag 檢測的時候,只支持 cp437 和 utf-8。

具體就是查找 zipfile.py 源代碼找到下面的代碼:

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')

可見編碼被正確識別為utf8時的情況外,都會被識別并decode為cp437編碼,但如果實際是gbk等其他編碼時就變為亂碼了。所以解決的方法在于被decode為cp437后重新再手動轉為正確的編碼。

具體代碼如下:

#修改代碼
if flags & 0x800:
 # UTF-8 file names extension
 filename = filename.decode('utf-8')
else:
 # Historical ZIP filename encoding
 filename = filename.decode('cp437')
 #修改
 filename = filename.encode("cp437").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_str.encode("cp437").decode('gbk')

親測有效!

以上這篇解決python3中解壓zip文件是文件名亂碼的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑水县| 田阳县| 武平县| 从江县| 灵宝市| 塘沽区| 徐闻县| 吴堡县| 抚顺县| 抚州市| 石河子市| 韩城市| 泰州市| 南康市| 江门市| 金川县| 自贡市| 龙州县| 连城县| 太谷县| 昂仁县| 潮安县| 怀远县| 出国| 五指山市| 邵阳市| 政和县| 张北县| 阜新| 尼玛县| 抚松县| 思南县| 涿州市| 即墨市| 班戈县| 宁国市| 巫山县| 壤塘县| 贞丰县| 镇巴县| 土默特右旗|