使用 Python 编码和解码 MIME quoted-printable 数据
很多时候我们都需要处理的数据并不总是包含常规 ASCII 字符。例如,一封用非英语撰写的电子邮件。Python 有一个基于 MIME(多用途互联网邮件扩展)的模块,可以用它来处理此类字符。在本文中,我们将了解如何解码电子邮件或其他一些直接输入中的此类字符。
使用 email 包
email 包包含 mime 和 charset 模块,它们可以执行编码和解码工作,如下例所示。我们获取了一封包含 Unicode 字符的电子邮件,然后将其编码为 utf-8。
示例
import email.mime, email.mime.nonmultipart, email.charset msg=email.mime.nonmultipart.MIMENonMultipart('text', 'plain', charset='utf-8') #Construct a new charset cs=email.charset.Charset('utf-8') cs.body_encoding = email.charset.QP # Set the content using the new charset msg.set_payload(u'This is the text containing ünicöde', charset=cs) print(msg)
运行以上代码后,会得到以下结果 -
输出
Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is the text containing =C3=BCnic=C3=B6de
使用 quopri
此 python 模块可以进行 quoted-printable 传输编码和解码。quoted-printable 编码专为不包含过多的不可打印字符的数据而设计。在以下示例中,我们将看到如何对含有非常规 ASCII 字符的字符串进行编码和解码。
示例
import quopri str1 = 'äé' #encoded = quopri.encodestring('äé'.encode('utf-8')) encoded = quopri.encodestring(str1.encode('utf-8')) print(encoded) str2 = '=C3=A4=C3=A9' decoded_string = quopri.decodestring(str2) print(decoded_string.decode('utf-8'))
运行以上代码后,会得到以下结果 -
输出
b'=C3=A4=C3=A9' äé
广告