python使用zipfile解壓文件中文亂碼問題


中文在編程中真實后娘養的,各種坑爹,python3下中文亂碼這個問題抓破了頭皮,頭疼。看了alex的文章,才有種恍然大悟的感覺(鏈接在底部)。

一句話,就是轉換成unicode,壓縮前是什么編碼,使用什么編碼encode再decode回來

先看測試代碼:

#-*- coding: utf-8 -*-
import zipfile

# 默認模式r,讀
azip = zipfile.ZipFile("/Users/a/my_file/feise.zip", 'r')
# 返回所有文件夾和文件
zip_list = azip.namelist()
for zip_file in zip_list:
    print(zip_file)
    print(zip_file.encode('utf-8'))

  

真實文件名

緋色/w1985jc/沈嫣日記/8_【沈嫣日記】(33-完).txt  
print(zip_file):
τ│╔½/ú≈ú▒ú╣ú╕ú╡úΩúπ/╔≥µ╠╚╒╝╟/8_í╛╔≥µ╠╚╒╝╟í┐ú¿33-═Ωú⌐.txt
print(zip_file.encode('utf-8'))
b'\xcf\x84\xe2\x94\x82\xe2\x95\x94\xc2\xbd/\xc3\xba\xe2\x89\x88\xc3\xba\xe2\x96\x92\xc3\xba\xe2\x95\xa3\xc3\xba\xe2\x95\x95\xc3\xba\xe2\x95\xa1\xc3\xba\xce\xa9\xc3\xba\xcf\x80/\xe2\x95\x94\xe2\x89\xa5\xc2\xb5\xe2\x95\xa0\xe2\x95\x9a\xe2\x95\x92\xe2\x95\x9d\xe2\x95\x9f/8_\xc3\xad\xe2\x95\x9b\xe2\x95\x94\xe2\x89\xa5\xc2\xb5\xe2\x95\xa0\xe2\x95\x9a\xe2\x95\x92\xe2\x95\x9d\xe2\x95\x9f\xc3\xad\xe2\x94\x90\xc3\xba\xc2\xbf33-\xe2\x95\x90\xce\xa9\xc3\xba\xe2\x8c\x90.txt'

  

廢話不多說了,直接上最后成功代碼,使用cp437可以正確讀取部分,但是還有一部分卻打印出來\u的編碼,

因為看了alex的文章,又在catch中加上了utf-8的解碼方式

#-*- coding: utf-8 -*-
import zipfile

# 默認模式r,讀
azip = zipfile.ZipFile("/Users/a/my_file/feise.zip", 'r')
# 返回所有文件夾和文件
zip_list = azip.namelist()
for zip_file in zip_list:
print(zip_file)
print(zip_file.encode('utf-8'))
try:
zip_file = zip_file.encode('cp437').decode('gbk')
except:
zip_file = zip_file.encode('utf-8').decode('utf-8')
print(zip_file)

  一句話,就是轉換成unicode,壓縮前是什么編碼,使用什么編碼encode再decode回gbk、utf-8

 

本文參考文檔:

https://www.cnblogs.com/CN-S/p/6566395.html

https://www.cnblogs.com/alex3714/articles/7550940.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM