email.charset :表示字符集

源代码: Lib/email/charset.py


此模块是传统模块的一部分 (Compat32 )电子邮件API。在新的API中,只使用别名表。

本节的其余文本是模块的原始文档。

此模块提供一个类 Charset 用于在电子邮件中表示字符集和字符集转换,以及字符集注册表和操作此注册表的几种方便方法。实例 Charsetemail 包裹。

从导入此类 email.charset 模块。

class email.charset.Charset(input_charset=DEFAULT_CHARSET)

将字符集映射到其电子邮件属性。

此类提供有关特定字符集的电子邮件要求的信息。它还为字符集之间的转换提供了方便的例程,考虑到适用编解码器的可用性。给定一个字符集,它将尽最大努力提供有关如何以符合RFC的方式在电子邮件中使用该字符集的信息。

在电子邮件头或正文中使用某些字符集时,必须使用带引号的可打印字符集或base64进行编码。某些字符集必须直接转换,并且不允许在电子邮件中转换。

可选的 input_charset 如下所述;它总是强制使用小写。在别名规范化之后,它还用作对字符集注册表的查找,以查找要用于字符集的头编码、正文编码和输出转换编解码器。例如,如果 input_charsetiso-8859-1 然后,将使用带引号的可打印文件对头和正文进行编码,不需要输出转换编解码器。如果 input_charseteuc-jp ,则头将使用base64进行编码,体将不进行编码,但输出文本将从 euc-jp 字符集为 iso-2022-jp 字符集。

Charset 实例具有以下数据属性:

input_charset

指定的初始字符集。常用别名转换为 官方的 电子邮件名称(例如 latin_1 转换为 iso-8859-1 )默认为7位 us-ascii .

header_encoding

如果在电子邮件头中使用字符集之前必须对其进行编码,则此属性将设置为 Charset.QP (对于引用的可打印文件) Charset.BASE64 (用于base64编码),或 Charset.SHORTEST 对于最短的qp或base64编码。否则,它将 None .

body_encoding

等同于 header_encoding ,但描述了邮件正文的编码,这确实可能与头编码不同。 Charset.SHORTEST 不允许用于 body_encoding .

output_charset

某些字符集必须转换后才能用于电子邮件头或正文。如果 input_charset 是其中之一,此属性将包含将转换为的字符集输出的名称。否则,它将 None .

input_codec

用于转换 input_charset 到Unicode。如果不需要转换编解码器,则此属性将 None .

output_codec

用于将Unicode转换为 output_charset . 如果不需要转换编解码器,则此属性的值与 input_codec .

Charset 实例还具有以下方法:

get_body_encoding()

返回用于正文编码的内容传输编码。

这不是字符串 quoted-printablebase64 根据所使用的编码,或者它是一个函数,在这种情况下,您应该用一个参数调用函数,消息对象被编码。然后函数应设置 Content-Transfer-Encoding 头本身到任何合适的地方。

返回字符串 quoted-printable 如果 body_encodingQP ,返回字符串 base64 如果 body_encodingBASE64 ,并返回字符串 7bit 否则。

get_output_charset()

返回输出字符集。

这就是 output_charset 属性如果不是 None ,否则就是 input_charset .

header_encode(string)

头对字符串进行编码 string .

编码类型(base64或带引号的可打印文件)将基于 header_encoding 属性。

header_encode_lines(string, maxlengths)

报头编码A string 先把它转换成字节。

这和 header_encode() 除非字符串符合参数给定的最大行长度 最大长度 ,它必须是迭代器:从此迭代器返回的每个元素都将提供下一个最大行长度。

body_encode(string)

body对字符串进行编码 string .

编码类型(base64或带引号的可打印文件)将基于 body_encoding 属性。

这个 Charset 类还提供了许多方法来支持标准操作和内置函数。

__str__()

返回 input_charset 作为强制小写的字符串。 __repr__() 是一个别名 __str__() .

__eq__(other)

此方法允许您比较 Charset 平等的实例。

__ne__(other)

此方法允许您比较 Charset 不平等的例子。

这个 email.charset 模块还提供以下功能,用于向全局字符集、别名和编解码器注册表添加新条目:

email.charset.add_charset(charset, header_enc=None, body_enc=None, output_charset=None)

将字符属性添加到全局注册表。

charset 是输入字符集,必须是字符集的规范名称。

可选的 header_encbody_enc 要么是 Charset.QP 对于引用的可打印文件, Charset.BASE64 对于base64编码, Charset.SHORTEST 最短的引用可打印或base64编码,或 None 没有编码。 SHORTEST 仅对有效 header_enc . 默认值为 None 没有编码。

可选的 output_charset 是输出应位于的字符集。当方法 Charset.convert() 被称为。默认情况下,输出的字符集与输入的字符集相同。

两个 input_charsetoutput_charset 在模块的字符集到编解码器映射中必须有Unicode编解码器项;请使用 add_codec() 要添加模块不知道的编解码器。见 codecs 有关更多信息,请参阅模块文档。

全局字符集注册表保存在模块全局字典中。 CHARSETS .

email.charset.add_alias(alias, canonical)

添加字符集别名。 别名 是别名,例如 latin-1 . 典范的 是字符集的规范名称,例如 iso-8859-1 .

全局字符集别名注册表保存在模块全局字典中。 ALIASES .

email.charset.add_codec(charset, codecname)

添加将给定字符集中的字符映射到Unicode和从Unicode映射字符的编解码器。

charset 是字符集的规范名称。 编名称 是python编解码器的名称,与 strencode() 方法。