中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

解決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

双峰县| 民丰县| 绥滨县| 神木县| 鸡泽县| 东辽县| 枣强县| 镇康县| 芦溪县| 宿松县| 潞城市| 永州市| 苏尼特右旗| 温州市| 广西| 德惠市| 洛南县| 忻州市| 津市市| 宣化县| 泗水县| 邛崃市| 贵南县| 海城市| 利辛县| 河池市| 汕尾市| 武乡县| 巴林右旗| 漳州市| 天气| 五家渠市| 腾冲县| 宾阳县| 锦州市| 定西市| 独山县| 义乌市| 明星| 邵武市| 策勒县|