email.charset:代表字符集
源代码: Lib/email/charset.py
此模块是旧版(Compat32
)电子邮件 API 的一部分。在新的 API 中,仅使用别名表。
本节中的其余文本是该模块的原始文档。
该模块提供了一个Charset类,用于表示电子邮件消息中的字符集和字符集转换,以及字符集注册表和用于操纵该注册表的几种便捷方法。 Charset的实例在email包中的其他几个模块中使用。
从email.charset模块导入此类。
- 类别
email.charset.
Charset
(* input_charset = DEFAULT_CHARSET *)- 将字符集 Map 到其电子邮件属性。
此类提供有关特定字符集对电子邮件的要求的信息。如果适用的编解码器可用,它还提供了方便的例程,可在字符集之间进行转换。给定一个字符集,它将尽力提供有关如何以符合 RFC 的方式在电子邮件中使用该字符集的信息。
在电子邮件标题或正文中使用时,某些字符集必须使用 quoted-printable 或 base64 编码。某些字符集必须完全转换,并且不允许在电子邮件中使用。
可选的* input_charset 如下所述;它总是被强制为小写。别名标准化后,它还用作查找字符集的注册表,以查找要用于字符集的 Headers 编码,主体编码和输出转换编解码器。例如,如果 input_charset 为iso-8859-1
,则标题和正文将使用 quoted-printable 进行编码,并且不需要输出转换编解码器。如果 input_charset *为euc-jp
,则 Headers 将使用 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 *相同,但描述了邮件正文的编码,实际上可能与 Headers 编码不同。 * body_encoding *不允许
Charset.SHORTEST
。
- 与* header_encoding *相同,但描述了邮件正文的编码,实际上可能与 Headers 编码不同。 * body_encoding *不允许
-
output_charset
- 某些字符集必须先转换,然后才能在电子邮件标题或正文中使用。如果* input_charset *是其中之一,则此属性将包含输出将转换为的字符集的名称。否则为
None
。
- 某些字符集必须先转换,然后才能在电子邮件标题或正文中使用。如果* input_charset *是其中之一,则此属性将包含输出将转换为的字符集的名称。否则为
-
input_codec
- 用于将* input_charset *转换为 Unicode 的 Python 编解码器的名称。如果不需要转换编解码器,则此属性将为
None
。
- 用于将* input_charset *转换为 Unicode 的 Python 编解码器的名称。如果不需要转换编解码器,则此属性将为
-
output_codec
- 用于将 Unicode 转换为* output_charset 的 Python 编解码器的名称。如果不需要转换编解码器,则此属性的值将与 input_codec *相同。
Charset个实例还具有以下方法:
get_body_encoding
( )- 返回用于正文编码的内容传输编码。
根据所使用的编码,它可以是字符串quoted-printable
或base64
,也可以是函数,在这种情况下,应使用单个参数(已编码的 Message 对象)调用该函数。然后,该函数应将* Content-Transfer-Encoding *Headers 本身设置为适当的值。
如果* body_encoding 为QP
则返回字符串quoted-printable
,如果 body_encoding *为BASE64
则返回字符串base64
,否则返回字符串7bit
。
get_output_charset
( )- 返回输出字符集。
如果不是None
,则为* output_charset 属性;否则为 input_charset *。
header_encode
(* string *)- Headers 编码字符串* string *。
编码类型(base64 或带引号的可打印格式)将基于* header_encoding *属性。
header_encode_lines
(* string , maxlengths *)- pass首先将* string *转换为字节来对它进行标题编码。
这类似于header_encode(),不同之处在于该字符串适合参数* maxlengths *给出的最大行长度,该长度必须是迭代器:从此迭代器返回的每个元素都将提供下一个最大行长度。
body_encode
(* string *)- 对字符串* string *进行身体编码。
编码类型(base64 或带引号的可打印格式)将基于* body_encoding *属性。
Charset类还提供了许多支持标准操作和内置函数的方法。
email.charset模块还提供以下Function,用于将新条目添加到全局字符集,别名和编解码器注册表中:
email.charset.
add_charset
(* charset , header_enc = None , body_enc = None , output_charset = None *)- 将字符属性添加到全局注册表。
- charset *是 Importing 字符集,并且必须是字符集的规范名称。
可选的* header_enc 和 body_enc 要么是_表示带引号的可打印字符,_表示 base64 编码,否则是Charset.SHORTEST
表示最短的带引号的可打印字符或 base64 编码,或者是None
表示无编码。 SHORTEST
仅对 header_enc *有效。默认为None
(不编码)。
可选的* output_charset *是输出应位于的字符集。调用方法Charset.convert()
时,转换将从 Importing 字符集到 Unicode,再到输出字符集。默认设置是输出与 Importing 相同的字符集。
- input_charset 和 output_charset *在模块的字符集到编解码器 Map 中都必须具有 Unicode 编解码器条目。使用add_codec()添加模块不知道的编解码器。有关更多信息,请参见codecs模块的文档。
全局字符集注册表保存在模块全局字典CHARSETS
中。
email.charset.
add_alias
(* alias , canonical *)- 添加字符集别名。 * alias *是别名,例如
latin-1
。 * canonical *是字符集的规范名称,例如iso-8859-1
。
- 添加字符集别名。 * alias *是别名,例如
全局字符集别名注册表保存在模块全局字典ALIASES
中。
email.charset.
add_codec
(* charset , codecname *)- 添加一个编解码器,该编解码器将给定字符集中的字符与 UnicodeMap。