email.charset
:表示字符集¶
源代码: Lib/email/charset.py
此模块是传统模块的一部分 (Compat32
)电子邮件API。在新的API中,只使用别名表。
本节的其余文本是模块的原始文档。
此模块提供一个类 Charset
用于在电子邮件中表示字符集和字符集转换,以及字符集注册表和操作此注册表的几种方便方法。实例 Charset
在 email
包裹。
从导入此类 email.charset
模块。
- class email.charset.Charset(input_charset=DEFAULT_CHARSET)¶
将字符集映射到其电子邮件属性。
此类提供有关特定字符集的电子邮件要求的信息。它还为字符集之间的转换提供了方便的例程,考虑到适用编解码器的可用性。给定一个字符集,它将尽最大努力提供有关如何以符合RFC的方式在电子邮件中使用该字符集的信息。
在电子邮件头或正文中使用某些字符集时,必须使用带引号的可打印字符集或base64进行编码。某些字符集必须直接转换,并且不允许在电子邮件中转换。
可选的 input_charset 如下所述;它总是强制使用小写。在别名规范化之后,它还用作对字符集注册表的查找,以查找要用于字符集的头编码、正文编码和输出转换编解码器。例如,如果 input_charset 是
iso-8859-1
然后,将使用带引号的可打印文件对头和正文进行编码,不需要输出转换编解码器。如果 input_charset 是euc-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-printable
或base64
根据所使用的编码,或者它是一个函数,在这种情况下,您应该用一个参数调用函数,消息对象被编码。然后函数应设置 Content-Transfer-Encoding 头本身到任何合适的地方。返回字符串
quoted-printable
如果 body_encoding 是QP
,返回字符串base64
如果 body_encoding 是BASE64
,并返回字符串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
类还提供了许多方法来支持标准操作和内置函数。
这个 email.charset
模块还提供以下功能,用于向全局字符集、别名和编解码器注册表添加新条目:
- email.charset.add_charset(charset, header_enc=None, body_enc=None, output_charset=None)¶
将字符属性添加到全局注册表。
charset 是输入字符集,必须是字符集的规范名称。
可选的 header_enc 和 body_enc 要么是
Charset.QP
对于引用的可打印文件,Charset.BASE64
对于base64编码,Charset.SHORTEST
最短的引用可打印或base64编码,或None
没有编码。SHORTEST
仅对有效 header_enc . 默认值为None
没有编码。可选的 output_charset 是输出应位于的字符集。当方法
Charset.convert()
被称为。默认情况下,输出的字符集与输入的字符集相同。两个 input_charset 和 output_charset 在模块的字符集到编解码器映射中必须有Unicode编解码器项;请使用
add_codec()
要添加模块不知道的编解码器。见codecs
有关更多信息,请参阅模块文档。全局字符集注册表保存在模块全局字典中。
CHARSETS
.
- email.charset.add_alias(alias, canonical)¶
添加字符集别名。 别名 是别名,例如
latin-1
. 典范的 是字符集的规范名称,例如iso-8859-1
.全局字符集别名注册表保存在模块全局字典中。
ALIASES
.