最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年03月22日 09:39:58   作者:tian544556  
下面小編就為大家分享一篇解決python3中解壓zip文件是文件名亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在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后重新再手動轉(zhuǎn)為正確的編碼。

具體代碼如下:

#修改代碼
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文件是文件名亂碼的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python djanjo之csrf防跨站攻擊實驗過程

    Python djanjo之csrf防跨站攻擊實驗過程

    csrf攻擊,即cross site request forgery跨站(域名)請求偽造,這里的forgery就是偽造的意思。這篇文章主要給大家介紹了關(guān)于Python djanjo之csrf防跨站攻擊的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • Python辦公自動化之CSV文件的運用和管理

    Python辦公自動化之CSV文件的運用和管理

    Python辦公?動化是利?Python編程語?來創(chuàng)建腳本和程序,以簡化、加速和?動化?常辦公任務(wù)和?作流程的過程,本文主要來介紹一下如何利用Python進行CSV文件的運用和管理,感興趣的可以了解下
    2023-12-12
  • Python圖像處理之給圖片添加圓角效果的完整代碼

    Python圖像處理之給圖片添加圓角效果的完整代碼

    在日常的圖像處理任務(wù)中,我們經(jīng)常需要對圖片進行一些美化和調(diào)整,今天,我將向大家介紹一個使用Python編程語言,結(jié)合PIL(Python Imaging Library)庫,給圖片添加圓角效果的方法,需要的朋友可以參考下
    2025-03-03
  • 在Linux命令行中運行Python腳本的流程步驟

    在Linux命令行中運行Python腳本的流程步驟

    Python是一種高級編程語言,被廣泛應(yīng)用于數(shù)據(jù)科學、機器學習、Web 開發(fā)等領(lǐng)域,在Linux操作系統(tǒng)中,Python是一個默認安裝的解釋器,用戶可以通過命令行界面(CLI)來運行Python腳本,在本文中,我們將詳細介紹如何在Linux命令行中運行Python腳本,需要的朋友可以參考下
    2023-11-11
  • Python 登錄網(wǎng)站詳解及實例

    Python 登錄網(wǎng)站詳解及實例

    這篇文章主要介紹了Python 登錄網(wǎng)站詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • python操作redis數(shù)據(jù)庫的三種方法

    python操作redis數(shù)據(jù)庫的三種方法

    這篇文章主要介紹了python操作redis數(shù)據(jù)庫的三種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • python中使用正則表達式的方法詳解

    python中使用正則表達式的方法詳解

    這篇文章主要為大家詳細介紹了python中使用正則表達式的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 關(guān)于python?DataFrame的合并方法總結(jié)

    關(guān)于python?DataFrame的合并方法總結(jié)

    這篇文章主要介紹了關(guān)于python?DataFrame的合并方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Linux上使用Python統(tǒng)計每天的鍵盤輸入次數(shù)

    Linux上使用Python統(tǒng)計每天的鍵盤輸入次數(shù)

    這篇文章主要介紹了Linux上使用Python統(tǒng)計每天的鍵盤輸入次數(shù),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • python&MongoDB爬取圖書館借閱記錄

    python&MongoDB爬取圖書館借閱記錄

    這篇文章主要介紹了python&MongoDB爬取圖書館借閱記錄的相關(guān)資料,需要的朋友可以參考下
    2016-02-02

最新評論

达州市| 伊宁市| 景谷| 合肥市| 临颍县| 阿克苏市| 无锡市| 宁化县| 德庆县| 温泉县| 琼结县| 伊宁市| 永康市| 克什克腾旗| 额尔古纳市| 彝良县| 阿尔山市| 上高县| 遂平县| 定西市| 威信县| 湟中县| 昌宁县| 蒙城县| 子洲县| 皋兰县| 河曲县| 抚松县| 襄垣县| 宾川县| 兴安县| 玉门市| 鲜城| 江永县| 洮南市| 彭泽县| 凤城市| 达拉特旗| 沭阳县| 浦县| 泗阳县|