python使用zipfile解压文件中文乱码问题

摘要:
中文在编程中真实后娘养的,各种坑爹,python3下中文乱码这个问题抓破了头皮,头疼。看了alex的文章,才有种恍然大悟的感觉。

中文在编程中真实后娘养的,各种坑爹,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'xcfx84xe2x94x82xe2x95x94xc2xbd/xc3xbaxe2x89x88xc3xbaxe2x96x92xc3xbaxe2x95xa3xc3xbaxe2x95x95xc3xbaxe2x95xa1xc3xbaxcexa9xc3xbaxcfx80/xe2x95x94xe2x89xa5xc2xb5xe2x95xa0xe2x95x9axe2x95x92xe2x95x9dxe2x95x9f/8_xc3xadxe2x95x9bxe2x95x94xe2x89xa5xc2xb5xe2x95xa0xe2x95x9axe2x95x92xe2x95x9dxe2x95x9fxc3xadxe2x94x90xc3xbaxc2xbf33-xe2x95x90xcexa9xc3xbaxe2x8cx90.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

免责声明:文章转载自《python使用zipfile解压文件中文乱码问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Centos7中 mysql5.7 用户 创建 、授权、远程登录第6章 高级字符驱动操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Python从入门到精通】(十)Python流程控制的关键字该怎么用呢?【收藏下来,常看常新】

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。这篇文章主要介绍Python中流程控制的关键字的使用,涉及到if else,for,while等关键字 干货满满,建议收藏,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。 前言 有句话说程序就是由流程+数据结构组成。任何程序都是如此。前面花了好几个篇幅来介绍Python中的各种数据...

python基础篇(文件操作)

Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. 根据打开方式的不同能够执行的操 作也会有相应的差异. 打开文件的方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b...

scrapy爬虫成长日记之将抓取内容写入mysql数据库

前面小试了一下scrapy抓取博客园的博客(您可在此查看scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据),但是前面抓取的数据时保存为json格式的文本文件中的。这很显然不满足我们日常的实际应用,接下来看下如何将抓取的内容保存在常见的mysql数据库中吧。 说明:所有的操作都是在“scrapy爬虫成长日记之创建工程-抽取数据-保存为j...

交叉编译python2.7.7

一、python下载网址: http://www.python.org/ftp/python/ 二、python的交叉编译依赖openssl ,openssl的下载网址: https://www.openssl.org/source/old/ 三、编译:1、交叉编译 openssl-1.0.2g # /home/sw/openssh/openssl-1.0...

Qt5.3.2_CentOS6.4_单步调试环境__20160306【勿删,繁琐】

20160306 全程没有f/q ZC:使用的虚拟机环境是:博客园VMwareSkill 的 “CentOS6.4_x86_120g__20160306.rar” 需要调试器 gdb ,从“http://ftp.gnu.org/gnu/gdb/”下载了 “gdb-7.6.1.tar.bz2” 1、 在 对 gdb-7.6.1 执行make 的时候,会说缺少...

查看python库文档

安装完python第三方库以后,经常需要查询其文档,其实python就自带文档查看器。可以查看所有内置库和第三方库的文档,虽然不是很详尽,但是总比没有的好。 在命令行窗口 python -m pydoc -p 6000 简单解释一下: python -m pydoc表示打开pydoc模块,pydoc是查看python文档的首选工具; -p 6000表示在6...