:表示字符集 – – 电子邮件和MIME处理包(Python教程)(参考资料)
email.charset
:表示字符集
此模块是legacy(Compat32
)电子邮件API的一部分。在newAPI中只使用了别名表.
本节剩下的文字是模块的原始文件.
这个模块提供了一个类Charset
用于表示电子邮件中的字符集和字符集转换,以及字符集注册和操作此注册表的几种便捷方法.的实例Charset
用于email
包。
从email.charset
module.
- class
email.charset.
Charset
(input_charset=DEFAULT_CHARSET) -
将字符集映射到他们的电子邮件属性.
此类提供有关特定字符集的电子邮件要求的信息。考虑到适用的编解码器的可用性,它还提供了在字符集之间进行转换的便利例程。Givena字符集,它将尽力以符合RFC的方式提供有关如何在电子邮件中使用该字符集的信息.
在电子邮件标题或正文中使用时,某些字符集必须使用quoted-printable或base64进行编码。某些字符集必须彻底转换,不允许在电子邮件中使用.
可选的 input_charset如下所述;它始终被强制为小写。在进行别名规范化之后,它还用作查找字符集的部分,以找出用于字符集的头部编码,主体编码和输出转换编解码器。例如,如果input_charset是
iso-8859-1
,然后标题和正文将使用引号可打印编码,并且不需要输出转换编解码器。如果input_charset是euc-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
.
Charset
实例相同的值,也具有以下方法:get_body_encoding
()-
返回用于身体编码的内容传输编码.
这是字符串
quoted-printable
或base64
取决于所使用的编码,或者它是一个函数,在这种情况下你应该调用函数使用单个参数,Message对象被编码。该函数应该将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或quoted-printable)将基于header_encoding属性
header_encode_lines
(string, maxlengths)-
头文件编码string首先将其转换为bytes
这类似于
header_encode()
,除了字符串最大由参数maxlengths给出的行长度,它必须是一个迭代器:从这个迭代器返回的每个元素将提供下一个最大行长度.
body_encode
(string)-
对字符串进行正文编码string.
编码的类型(base64或quoted-printable)将基于body_encoding属性
//
Charset
class还提供了许多方法来支持标准操作和内置函数.__str__
()-
Returns input_charset作为一个字符串被强制为小写。
__repr__()
是__str__()
.
__eq__
(other)的一个别名-
这个方法可以让你比较两个
Charset
实例forequality .
__ne__
(other)-
此方法允许您比较两个
Charset
实例forinequality.
email.charset
模块还提供以下函数,用于向全局字符集,别名和编解码器注册表添加新条目:
email.charset.
add_charset
(charset, header_enc=None, body_enc=None, output_charset=None)-
在全局注册表中添加字符属性.
charset是输入字符集,必须是字符集的规范名称。
可选header_enc和body_enc是
Charset.QP
forquoted-printable,Charset.BASE64
用于base64编码,Charset.SHORTEST
用于quoted-printable或base64编码最短,或None
没有编码。SHORTEST
仅对header_enc有效。对于无编码,默认为None
。可选output_charset是输出应该在的字符集。转换将从输入字符集,到Unicode,再到输出charsetwhen方法
Charset.convert()
被调用。默认是输出与输入相同的字符集.input_charset和output_charset必须在模块的字符集到编解码器映射中具有Unicode编解码器条目;使用
add_codec()
添加编解码器,则模块不知道。见codecs
模块的文档以获取更多信息.全局字符集注册表保存在模块全局字典中
CHARSETS
.
email.charset.
add_alias
(alias, canonical)-
添加字符集别名。alias是别名,例如
latin-1
.canonical是字符集的规范名称,例如iso-8859-1
.全局字符集别名注册表保存在模块全局字典中
ALIASES
.
email.charset.
add_codec
(charset, codecname)-
添加一个编解码器,将给定字符集中的字符映射到Unicode和来自Unicode.
charset是字符集的规范名称。codecname是一个Python代码的名称,适用于
str
的//encode()
方法的第二个参数.