python使用zipfile解压文件中文乱码问题
中文在编程中真实后娘养的,各种坑爹,python3下中文乱码这个问题抓破了头皮,头疼。看了alex的文章,才有种恍然大悟的感觉(链接在底部)。
一句话,就是转换成unicode,压缩前是什么编码,使用什么编码encode再decode回来
先看测试代码:
1 2 3 4 5 6 7 8 9 10 | #-*- 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' )) |
真实文件名
1 | 绯色 / w1985jc / 沈嫣日记 / 8_ 【沈嫣日记】( 33 - 完).txt |
1 | print (zip_file): |
1 | τ│╔½ / ú≈ú▒ú╣ú╕ú╡úΩúπ / ╔≥µ╠╚╒╝╟ / 8_ í╛╔≥µ╠╚╒╝╟í┐ú¿ 33 - ═Ωú⌐.txt |
1 | print (zip_file.encode( 'utf-8' )) |
1 | 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

作者:妖生
<<<<我的公众号:姚毛毛的博客
Linux常用工具站:https://www.linuxido.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
如果喜欢本文就点个【推荐】吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端