之前看到群友这样一个问题:

大概就是调用网络接口得到的数据是如下形式:

text = """=E5=9B=A0=E4=B8=BA=E4=B8=81=E4=BF=8A=E6=99=96=E5=8F=AA=E8=B7=9F=E7=9D=80=
=E9=BA=A6=E8=BF=AA=E5=B0=B1=E4=B8=8D=E5=8F=AF=E8=83=BD=E9=82=A3=E5=88=B0=
=E6=80=BB=E5=86=A0=E5=86=9B=E6=88=92=E6=8C=87=EF=BC=8C=E8=80=83=E8=99=91=
=E5=88=B0=E6=8A=A4=E7=90=83=E9=97=AE=E9=A2=98=EF=BC=8C=E5=A6=82=E6=9E=9C=
=E7=94=A8=E9=BA=A6=E8=BF=AA=E6=8D=A2=E4=BA=A8=E5=88=A9=E7=9A=84=E8=AF=9D=
=E8=AF=B4=E4=B8=8D=E5=AE=9A=E5=B0=B1=E8=A1=8C=EF=BC=8C=E5=BD=93=E7=84=B6=
=E8=AF=B8=E8=91=9B=E5=AD=94=E6=98=8E=E8=BF=99=E4=B8=AA=E8=80=81=E7=8B=90=
=E7=8B=B8=E8=82=AF=E5=AE=9A=E6=98=AF=E7=95=A5=E6=87=82=E8=BF=99=E4=BB=B6=
=E4=BA=8B=E7=9A=84=EF=BC=8C=E4=BB=96=E7=AC=AC=E4=B8=80=E4=B8=AA=E4=B8=8D=
=E7=AD=94=E5=BA=94=EF=BC=8C=E5=B0=B1=E7=AE=97=E4=BB=96=E7=AD=94=E5=BA=94=
=E4=BA=86=EF=BC=8C=E7=BC=9D=E5=B0=8F=E8=82=9B=E8=83=BD=E7=AD=94=E5=BA=94=
=E5=90=97=EF=BC=9F=E6=89=80=E4=BB=A5=E8=BF=99=E6=95=B4=E4=BB=B6=E4=BA=8B=
=E6=83=85=E7=9A=84=E4=BA=AE=E7=82=B9=E5=B0=B1=E5=9C=A8=E4=BA=8E=E7=A7=A6=
=E5=A5=8B"""

其实这是Quoted-Printable Content-Transfer-Encoding编码出来的文本,这种编码的目的是为了防止文字传输时编码格式被修改,参看:https://www.freesoft.org/CIE/RFC/1521/6.htm

对于这种编码形式,python内置库提供了quopri能够解码上述文本:

import quopriresult = quopri.decodestring(text).decode("u8")
result
'因为丁俊晖只跟着麦迪就不可能那到总冠军戒指,考虑到护球问题,如果用麦迪换亨利的话说不定就行,当然诸葛孔明这个老狐狸肯定是略懂这件事的,他第一个不答应,就算他答应了,缝小肛能答应吗?所以这整件事情的亮点就在于秦奋'

关于quopri模块可参考:https://docs.python.org/zh-cn/3/library/quopri.html

也就四个方法:

下面再测试一下编码:

text = "测试 Quoted-Printable \t编码"
quopri.encodestring(text.encode("u8"))
b'=E6=B5=8B=E8=AF=95 Quoted-Printable \t=E7=BC=96=E7=A0=81'

其中quotetabs参数表示是否对空格和制表符编码,默认不编码。
我们测试一下对空格和制表符编码:

quopri.encodestring(text.encode("u8"), quotetabs=True)
b'=E6=B5=8B=E8=AF=95=20Quoted-Printable=20=09=E7=BC=96=E7=A0=81'

可以看到空格和制表符分别被转换成为=20=09

header参数则控制了空格是否被编码为下划线:

quopri.encodestring(text.encode("u8"), header=True)
b'=E6=B5=8B=E8=AF=95_Quoted-Printable_\t=E7=BC=96=E7=A0=81'

⚠️注意:当quotetabs参数设置为True时,header参数则无效。

decodeencode与上述方法的区别在于是对流对象进行操作。

Quoted-printable编码的介绍和quopri库的使用相关推荐

  1. Fresco图片加载框架的介绍,相关开源库以及工具类的封装

    Fresco图片加载框架的介绍,相关开源库以及工具类的封装 本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 简介 Fresco 是Facebook开源的安卓上的 ...

  2. vue组件库介绍以及组件库Element UI 的使用

    组件库 前言 这篇文章介绍vue组件库! 介绍什么是组件库以及Element UI组件库的使用! 看完不会你打我.哈哈哈,开玩笑的,不多说,上刺刀!! 1. 什么是 vue 组件库 在实际开发中,前端 ...

  3. ASCII编码的介绍与分析

    ASCII编码的介绍 在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a.b.c.d这样的52个字母(包括大写)以及0.1等数字还有一些常 ...

  4. go-dongle 0.2.0 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

    dongle 是一个轻量级.语义化.对开发者友好的 Golang 编码解码和加密解密库 Dongle 已被 awesome-go 收录, 如果您觉得不错,请给个 star 吧 github.com/g ...

  5. H.264编码的介绍

    H.264编码的介绍 关键技术 1.帧内预测编码 帧内编码用来缩减图像的空间冗余.为了提高H.264帧内编码的效率,在给定帧中充分利用相邻宏块的空间相关性,相邻的宏块通常含有相似的属性.因此,在对一给 ...

  6. emoji 编码规则介绍

    emoji 编码规则介绍 简介 emoji 来源于日语中的 絵 (e) 文字 (moji),起源于 1999 年日本手机(也有说在1994年的寻呼机中已经在使用了).当时手机制造商 DoCoMo 建议 ...

  7. 【08】STM32·HAL库开发-HAL库介绍 | STM32Cube固件库介绍 | HAL库框架结构 | 如何使用HAL库及使用注意事项

    目录 1.初识HAL库(了解) 1.1CMSIS简介 1.2HAL库简介 2.STM32Cube固件包浅析(了解) 2.1如何获取STM32Cube固件包? 2.2STM32Cube固件包文件夹简介 ...

  8. Golomb及指数哥伦布编码原理介绍及实现

    2017年的第一篇博文. 本文主要有以下三部分内容: 介绍了Golomb编码,及其两个变种:Golomb-Rice和Exp-Golomb的基本原理 C++实现了一个简单的BitStream库,能够方便 ...

  9. 0.爬虫介绍及requests库的使用

    1. 互联网知识介绍 互联网: 是由网络设备(网线, 路由器, 交换机, 防火墙...)和一台台计算机链接而成. 互联网建立的目的: 数据的共享/传递. 俗称的'上网': 由用户端计算机发送请求给目标 ...

最新文章

  1. python中的异常分类
  2. 联手Slack,IBM欲开发多元化智能聊天机器人
  3. Android App解决卡顿慢之内存抖动及内存泄漏(发现和定位)
  4. 比亚迪汉鸿蒙系统测评_比亚迪汉性能强悍,麋鹿测试成绩超80km/h
  5. Opencv基础画图函数——line、circle、rectangle、Rect、ellipse、polylines、putText函数的用法
  6. Anaconda prompt下常用命令
  7. matlab gui制作,MATLAB GUI制作教程
  8. 文献阅读-深度学习跨模态图文检索研究综述
  9. php 自定义模板标签,自定义模板解析list标签
  10. 麻雀算法(SSA)优化的BP神经网络预测,SSA-BP回归预测,多输入单输出模型。
  11. GPU和CPU跑程序的代码区别
  12. AD软件自动添加原理图标注
  13. 【深度学习】OCR文本识别
  14. html5引入文本,引入文本有几种方式
  15. 神经网络务实:Linux下用GPU玩转TensorFlow
  16. php正则匹配是否为url地址,php正则匹配网址-正则php-php正则匹配url地址
  17. dnsmasq mysql_OpenStack Ironic之inspect自检
  18. 川崎机器人f控制柜接线图_川崎机器人PROFINET总线通信图文教程
  19. JS正则表达式完整教程(略长)
  20. wemos D1 Mini (esp8266)实验九 --- blynk APP远程控制格力空调开机并显示温湿度DHT22

热门文章

  1. html5谷歌地图,谷歌地图API和HTML 5
  2. 2021年中国PLG模式的SaaS公司新增的有哪些代表?
  3. 【笔记本加配置记录】笔记本加内存条,华硕拆后盖
  4. 厚积薄发 臻于至善,用友U9 cloud“王者归来”
  5. Gateway NV47H18C BIOS 密码清除
  6. C# Chart之双Y轴图表实现
  7. 【Godot】一个节点发射器(泼水机)
  8. python期货数据 库_如何用python或者基于vnpy框架将期货tick数据聚合成1分钟数据呢?...
  9. 一种网格去噪算法(基于平均面法向的均值滤波)
  10. App Thinning(为什么苹果app上传时的包比在appStore下载下来的包大很多)