摘要:我们测试一下对空格和制表符编码可以看到空格和制表符分别被转换成为和。和与上述方法的区别在于是对流对象进行操作。
之前看到群友这样一个问题:
大概就是调用网络接口得到的数据是如下形式:
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参数则无效。
decode和encode与上述方法的区别在于是对流对象进行操作。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/120001.html
摘要:发送邮件好说,接收和下载邮件也好说。所以我们想要解析一封邮件把它拆成人能读懂的标题收发件人内容附件等,就必须得理解这套协议。了解协议,其实主要就是了解邮件的嵌套结构。另一种压缩方式,需要用库函数来解码。 邮件的解析是个大课题,远超一般人的预期。它远比发送邮件和接收邮件要复杂的多的多。这就是为什么网上中文外文搜邮件的问题,绝大多数都是讲发送的而讲接收的很少。 发送邮件好说,接收和下载邮件...
摘要:字符编码表,码位码元将编码字符集中的码位转换成有限比特长度的整型值的序列。字符编码方案,码元序列化也称为常说的序列化。每个字节里的二进制数就是字节序列。另一个情况则是压缩字节序列的值,如或进程长度编码等无损压缩技术。 《流畅的Python》笔记。本篇主要讲述不同编码之间的转换问题,比较繁杂,如果平时处理文本不多,或者语言比较单一,没有多语言文本处理的需求,则可以略过此篇。 1. 前言 ...
摘要:前言本篇主要介绍基本数据类型,以文本进度条为例,介绍库的使用。 前言 本篇主要介绍基本数据类型,以文本进度条为例,介绍time库的使用。 并在最后对蟒蛇绘制的代码进...
摘要:编码转换为编码下面让我们来看下如何将编码的数据转换为编码的数据。该方法是将码进行编码转换,从而得到编码的数据。 概述 当你在前端需要通过二进制数据与服务端进行通信时,你可能会遇到二进制数据的编码问题。大部分服务端的字符串编码类型都为UTF-8,而JavaScript中字符串编码类型是UTF-16,因此,你需要一个能够将字符串在两种编码方式间进行转换的方法。 本文通过对utfx.js这个...
阅读 1634·2021-10-09 09:44
阅读 2765·2021-10-08 10:04
阅读 2459·2021-09-26 09:55
阅读 3830·2021-09-22 10:02
阅读 3302·2019-08-29 17:08
阅读 1063·2019-08-29 15:08
阅读 2950·2019-08-26 13:52
阅读 3266·2019-08-26 13:34