国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-01-04 15:24:17
字體:
來源:轉載
供稿:網友

在zip標準中,對文件名的 encoding 用的不是 unicode,而可能是各種軟件根據(jù)系統(tǒng)的默認字符集來采用(此為猜測),因此zipfile中根據(jù)文件 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等其他編碼時就變?yōu)閬y碼了。所以解決的方法在于被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文件是文件名亂碼的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 穆棱市| 连平县| 恩施市| 商城县| 林西县| 嵩明县| 静安区| 赣州市| 博白县| 黔江区| 新竹市| 思南县| 崇左市| 罗甸县| 思南县| 泸溪县| 武穴市| 梅河口市| 义乌市| 疏勒县| 昌邑市| 邵阳县| 牙克石市| 香格里拉县| 皮山县| 资源县| 科技| 新乡县| 常宁市| 广元市| 宣威市| 郸城县| 华坪县| 鹤壁市| 渭南市| 定南县| 同江市| 扶余县| 河东区| 长子县| 香港|