email.charset:表示字符集

源代码: Lib / email / charset.py


此模块是legacy(Compat32电子邮件API的一部分。在newAPI中只使用了别名表.

本节剩下的文字是模块的原始文件.

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

email.charsetmodule.

class email.charset.Charsetinput_charset=DEFAULT_CHARSET

将字符集映射到他们的电子邮件属性.

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

在电子邮件标题或正文中使用时,某些字符集必须使用quoted-printable或base64进行编码。某些字符集必须彻底转换,不允许在电子邮件中使用.

可选的 input_charset如下所述;它始终被强制为小写。在进行别名规范化之后,它还用作查找字符集的部分,以找出用于字符集的头部编码,主体编码和输出转换编解码器。例如,如果input_charsetiso-8859-1,然后标题和正文将使用引号可打印编码,并且不需要输出转换编解码器。如果input_charseteuc-jp,然后标题将用base64编码,body将不被编码,但输出文本将从euc-jp字符集转换为iso-2022-jp字符集.

Charset实例有以下数据属性:

input_charset

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

header_encoding

如果字符集必须先编码才能在电子邮件头中使用,则此属性将设置为Charset.QP(forquoted-printable),Charset.BASE64(对于base64编码),或Charset.SHORTEST用于最短的QP或BASE64编码。否则,它将None.

body_encoding

header_encoding相同,但是描述了mailmessage的主体的编码,它确实可能与头编码不同.Charset.SHORTEST不允许body_encoding.

output_charset

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

input_codec

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

output_codec

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

Charset实例相同的值,也具有以下方法:

get_body_encoding

返回用于身体编码的内容传输编码.

这是字符串quoted-printablebase64取决于所使用的编码,或者它是一个函数,在这种情况下你应该调用函数使用单个参数,Message对象被编码。该函数应该将Content-Transfer-Encoding标题本身设置为适当的

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

get_output_charset// (

返回输出字符集

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

header_encodestring

标头编码字符串string.

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

header_encode_linesstring, maxlengths

头文件编码string首先将其转换为bytes

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

body_encode (string

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

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

// Charsetclass还提供了许多方法来支持标准操作和内置函数.

__str__ ()

Returns input_charset作为一个字符串被强制为小写。__repr__()__str__().

__eq__other)的一个别名

这个方法可以让你比较两个Charset实例forequality .

__ne__other

此方法允许您比较两个Charset实例forinequality.

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

email.charset.add_charsetcharset, header_enc=None, body_enc=None, output_charset=None

在全局注册表中添加字符属性.

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

可选header_encbody_encCharset.QP forquoted-printable,Charset.BASE64用于base64编码,Charset.SHORTEST用于quoted-printable或base64编码最短,或None没有编码。SHORTEST仅对header_enc有效。对于无编码,默认为None

可选output_charset是输出应该在的字符集。转换将从输入字符集,到Unicode,再到输出charsetwhen方法Charset.convert()被调用。默认是输出与输入相同的字符集.

input_charsetoutput_charset必须在模块的字符集到编解码器映射中具有Unicode编解码器条目;使用 add_codec()添加编解码器,则模块不知道。见codecs模块的文档以获取更多信息.

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

email.charset.add_aliasalias, canonical

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

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

email.charset.add_codeccharset, codecname

添加一个编解码器,将给定字符集中的字符映射到Unicode和来自Unicode.

charset是字符集的规范名称。codecname是一个Python代码的名称,适用于str的// encode()方法的第二个参数.