python对于gbk处理(Python 2/3下处理cjk编码的zip文件的方法)
类别:脚本大全 浏览量:1019
时间:2021-10-14 00:40:07 python对于gbk处理
Python 2/3下处理cjk编码的zip文件的方法今天项目中遇到了中文编码的zip文件,处理了蛮长时间,所以记录下,以免下次踩坑。
python2下
python2中读取zip文件,zipfile.zipinfo的filename类型是str,基本上类似于python3中的bytes,即可以被decode为unicode。
所以,要处理中文,只需要将文件名按照编码decode成unicode就好。
|
import zipfile fpath = '/path/to/zip.zip' zfile = zipfile.zipfile(fpath, 'r' ) for fileinfo in zfile.filelist: print fileinfo.filename.decode( 'gb18030' ) # 如果要更加详细的区分bytes/str/unicode的语义 print bytes(fileinfo.filename).decode( 'gb18030' ) |
python3下
python3中,language encoding flag (efs)如果是1,则按照utf8来处理文件编码,efs如果为0,则直接按照cp437解码文件名。这是标准直接规定的。
但是,很多软件在制作zip压缩包的时候,直接使用gb18030或者其他非标准编码格式来编码文件名,所以我们还得将文件名反转为bytes,然后再使用对应的编码方式解码:
|
fpath = '/path/to/zip.zip' zfile = zipfile.zipfile(fpath, 'r' ) for fileinfo in zfile.filelist: print (fileinfo.filename.encode( 'cp437' ).decode( 'gb18030' )) |
方法都有了,那直接根据文件名智能猜测文件编码,然后解压就好。但是由于单个文件名太短,chardet的猜测可能不准,所以我们可以直接将所有的文件名连接起来,猜测编码。
代码请参考 mczip ,兼容python2和python3。
总结
以上所述是小编给大家介绍的python 2/3下处理cjk编码的zip文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!原文链接:https://www.robberphex.com/2019/04/1022
您可能感兴趣
- 12步轻松搞定python装饰器(Python3.5装饰器典型案例分析)
- 图解python轻松快速掌握(10招!看骨灰级Pythoner玩转Python的方法)
- python多线程多进程运行场景(Python多线程同步---文件读写控制方法)
- python监控系统界面(Python远程视频监控程序的实例代码)
- python爬虫爬取网页信息教程(python爬虫爬取微博评论案例详解)
- python编写的小程序(几个适合python初学者的简单小程序,看完受益匪浅!推荐)
- python核心编程内容(顶级大神Linux,Python,Go,PHP之父谁是夜猫子?用Python揭秘!)
- python扫描服务器端口(Python实现的对本地host127.0.0.1主机进行扫描端口功能示例)
- python去除字符串中间的空格(Python去除字符串前后空格的几种方法)
- python获取excelsheet名称(python查询文件夹下excel的sheet名代码实例)
- python协程使用教程(对Python协程之异步同步的区别详解)
- python将对象转换成json(python对象与json相互转换的方法)
- python变量与对象的关系(Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析)
- python 验证码识别模块([机器视觉]使用python自动识别验证码详解)
- 如何用python做一个弹窗(python实现弹窗祝福效果)
- pythonrequests框架实例(Python requests模块实例用法)
- ()
- 张勇 阿里新任掌门人(阿里新任掌门人)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
- 14岁丧父 20岁丧母,从苦难走向辉煌的银泰创始人沈国军(14岁丧父20岁丧母从苦难走向辉煌的银泰创始人沈国军)
- 银泰集团董事长沈国军获评 北京影响力 十大企业家(银泰集团董事长沈国军获评)
- 15帅气男士发型,清爽时尚很有型,喜欢就试试(清爽时尚很有型)
热门推荐
- mysql拆分字符串(MySQL 字符串拆分操作含分隔符的字符串截取)
- jQuery邮箱自动补全
- python中列表操作五种常用方法(Python使用paramiko操作linux的方法讲解)
- jsfor循环是什么意思(JavaScript中三种for循环语句的使用总结for、for...in、for...of)
- nginx https 域名配置(阿里云Nginx配置https实现域名访问项目图文教程)
- Visual Studio使用Git进行源代码管理
- mysql的连接代码(MySQL 连接查询的原理和应用)
- sql server2008无法连接怎么办(SQL Server 2008 R2登录失败的解决方法)
- MVC使用HandleErrorAttribute自定义异常
- 有了云服务器还需要服务器吗(为什么云服务器淘汰了传统服务器?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9