19.1.9. email.charset:表示字符集

源代码: Lib / email / charset.py

此模块提供了一个类Charset,用于表示电子邮件中的字符集和字符集转换,以及字符集注册表和若干方便的方法来操作此注册表。Charset的实例用于email包中的其他几个模块。

email.charset模块导入此类。

class email.charset.Charset(input_charset=DEFAULT_CHARSET)

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

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

当在电子邮件标头或正文中使用时,某些字符集必须使用quoted-printable或base64进行编码。某些字符集必须完全转换,并且不允许在电子邮件中使用。

可选input_charset如下所述;它总是强制小写。在被别名规范化之后,它也被用作对字符集注册表的查找,以找出用于字符集的头编码,主体编码和输出转换编解码器。例如,如果input_charsetiso-8859-1,那么头和主体将使用quoted-printable进行编码,并且不需要输出转换编解码器。If input_charset is euc-jp, then headers will be encoded with base64, bodies will not be encoded, but output text will be converted from the euc-jp character set to the iso-2022-jp character set.

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

input_charset T0> ¶ T1>

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

header_encoding T0> ¶ T1>

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

body_encoding T0> ¶ T1>

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

output_charset T0> ¶ T1>

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

input_codec T0> ¶ T1>

用于将input_charset转换为Unicode的Python编解码器的名称。如果不需要转换编解码器,此属性将为None

output_codec T0> ¶ T1>

用于将Unicode转换为output_charset的Python编解码器的名称。如果不需要转换编解码器,则此属性将具有与input_codec相同的值。

Charset实例还具有以下方法:

get_body_encoding T0> ( T1> ) T2> ¶ T3>

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

根据所使用的编码,它是字符串quoted-printablebase64,或者是一个函数,在这种情况下,应该使用单个参数正在编码的消息对象。然后,函数应将Content-Transfer-Encoding头设置为适当的值。

Returns the string quoted-printable if body_encoding is QP, returns the string base64 if body_encoding is BASE64, and returns the string 7bit otherwise.

get_output_charset T0> ( T1> ) T2> ¶ T3>

返回输出字符集。

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

header_encode T0> ( T1> 字符串 T2> ) T3> ¶ T4>

对字符串string进行标头编码。

编码类型(base64或quoted-printable)将基于header_encoding属性。

header_encode_lines stringmaxlengths

通过首先将字符串转换为字节来对其进行标头编码。

这类似于header_encode(),除了字符串适合由参数maxlengths给出的最大行长度,它必须是迭代器:从此迭代器返回的每个元素将提供下一个最大线路长度。

body_encode T0> ( T1> 字符串 T2> ) T3> ¶ T4>

对字符串string进行正文编码。

编码类型(base64或quoted-printable)将基于body_encoding属性。

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

__ STR __ T0> ( T1> ) T2> ¶ T3>

以强制转换为小写字母的字符串形式返回input_charset__repr__()__str__()的别名。

__当量__ T0> ( T1> 其他 T2> ) T3> ¶ T4>

此方法允许您比较两个Charset实例的相等性。

__ NE __ T0> ( T1> 其他 T2> ) T3> ¶ T4>

此方法允许您比较两个Charset实例的不等式。

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

email.charset tt> add_charset charsetheader_enc =无body_enc = Noneoutput_charset = None

向全局注册表中添加字符属性。

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

Optional header_enc and body_enc is either Charset.QP for quoted-printable, Charset.BASE64 for base64 encoding, Charset.SHORTEST for the shortest of quoted-printable or base64 encoding, or None for no encoding. SHORTEST仅对header_enc有效。默认值为None,表示无编码。

可选output_charset是输出应该在的字符集。当调用方法Charset.convert()时,转换将从输入字符集,Unicode转换为输出字符集。默认值是以与输入相同的字符集输出。

input_charsetoutput_charset必须在模块的字符集到编解码器映射中具有Unicode编解码器条目;使用add_codec()添加模块不知道的编解码器。有关详细信息,请参阅codecs模块的文档。

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

email.charset。 add_alias 别名规范 T5> ¶ T6>

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

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

email.charset。 T0> add_codec T1> ( T2> 字符集 T3>, codecname T4> ) T5> ¶ T6>

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

字符集是字符集的规范名称。codecname是Python编解码器的名称,适用于strencode()方法的第二个参数。