email.charset: 表示字符集?

源代碼: Lib/email/charset.py


此模塊是舊版 (Compat32) email API 的組成部分。 在新版 API 中只會(huì)使用其中的別名表。

本節(jié)中的其余文本是此模塊的原始文檔。

此模塊提供了一個(gè) Charset 類(lèi)用來(lái)表示電子郵件消息中的字符集和字符集轉(zhuǎn)換操作,以及一個(gè)字符集注冊(cè)表和幾個(gè)用于操作此注冊(cè)表的便捷方法。 Charset 的實(shí)例在 email 包的其他幾個(gè)模塊中也有使用。

請(qǐng)從 email.charset 模塊導(dǎo)入這個(gè)類(lèi)。

class email.charset.Charset(input_charset=DEFAULT_CHARSET)?

將字符集映射到其 email 特征屬性。

這個(gè)類(lèi)提供了特定字符集對(duì)于電子郵件的要求的相關(guān)信息。 考慮到適用編解碼器的可用性,它還為字符集之間的轉(zhuǎn)換提供了一些便捷例程。 在給定字符集的情況下,它將盡可能地以符合 RFC 的方式在電子郵件消息中提供有關(guān)如何使用該字符集的信息。

特定字符集當(dāng)在電子郵件標(biāo)頭或消息體中使用時(shí)必須以 quoted-printable 或 base64 來(lái)編碼。 某些字符集則必須被立即轉(zhuǎn)換,不允許在電子郵件中使用。

可選的 input_charset 說(shuō)明如下;它總是會(huì)被強(qiáng)制轉(zhuǎn)為小寫(xiě)。 在進(jìn)行別名正規(guī)化后它還會(huì)被用來(lái)查詢(xún)字符集注冊(cè)表以找出用于該字符集的標(biāo)頭編碼格式、消息體編碼格式和輸出轉(zhuǎn)換編解碼器。 舉例來(lái)說(shuō),如果 input_charsetiso-8859-1,則標(biāo)頭和消息體將會(huì)使用 quoted-printable 來(lái)編碼并且不需要輸出轉(zhuǎn)換編解碼器。 如果 input_charseteuc-jp,則標(biāo)頭將使用 base64 來(lái)編碼,消息體將不會(huì)被編碼,但輸出文本將從 euc-jp 字符集轉(zhuǎn)換為 iso-2022-jp 字符集。

Charset 實(shí)例具有下列數(shù)據(jù)屬性:

input_charset?

指定的初始字符集。 通用別名會(huì)被轉(zhuǎn)換為它們的 官方 電子郵件名稱(chēng) (例如 latin_1 會(huì)被轉(zhuǎn)換為 iso-8859-1)。 默認(rèn)值為 7 位 us-ascii。

header_encoding?

If the character set must be encoded before it can be used in an email header, this attribute will be set to charset.QP (for quoted-printable), charset.BASE64 (for base64 encoding), or charset.SHORTEST for the shortest of QP or BASE64 encoding. Otherwise, it will be None.

body_encoding?

Same as header_encoding, but describes the encoding for the mail message's body, which indeed may be different than the header encoding. charset.SHORTEST is not allowed for body_encoding.

output_charset?

某些字符集在用于電子郵件標(biāo)頭或消息體之前必須被轉(zhuǎn)換。 如果 input_charset 是這些字符集之一,該屬性將包含輸出將要轉(zhuǎn)換的字符集名稱(chēng)。 在其他情況下,該屬性將為 None

input_codec?

用于將 input_charset 轉(zhuǎn)換為 Unicode 的 Python 編解碼器名稱(chēng)。 如果不需要任何轉(zhuǎn)換編解碼器,該屬性將為 None。

output_codec?

用于將 Unicode 轉(zhuǎn)換為 output_charset 的 Python 編解碼器名稱(chēng)。 如果不需要任何轉(zhuǎn)換編解碼器,該屬性將具有與 input_codec 相同的值。

Charset 實(shí)例還有下列方法:

get_body_encoding()?

返回用于消息體編碼的內(nèi)容轉(zhuǎn)換編碼格式。

根據(jù)所使用的編碼格式返回 quoted-printablebase64,或是返回一個(gè)函數(shù),在這種情況下你應(yīng)當(dāng)調(diào)用該函數(shù)并附帶一個(gè)參數(shù),即被編碼的消息對(duì)象。 該函數(shù)應(yīng)當(dāng)自行將 Content-Transfer-Encoding 標(biāo)頭設(shè)為適當(dāng)?shù)闹怠?/p>

如果 body_encodingQP 則返回字符串 quoted-printable,如果 body_encodingBASE64 則返回字符串 base64,并在其他情況下返回字符串 7bit。

get_output_charset()?

返回輸出字符集。

如果 output_charset 屬性不為 None 則返回該屬性,否則返回 input_charset。

header_encode(string)?

對(duì)字符串 string 執(zhí)行標(biāo)頭編碼。

編碼格式的類(lèi)型 (base64 或 quoted-printable) 將取決于 header_encoding 屬性。

header_encode_lines(string, maxlengths)?

通過(guò)先將 string 轉(zhuǎn)換為字節(jié)串來(lái)對(duì)其執(zhí)行標(biāo)頭編碼。

這類(lèi)似于 header_encode(),區(qū)別是字符串會(huì)被調(diào)整至參數(shù) maxlengths 所給出的最大行長(zhǎng)度,它應(yīng)當(dāng)是一個(gè)迭代器:該迭代器返回的每個(gè)元素將提供下一個(gè)最大行長(zhǎng)度。

body_encode(string)?

對(duì)字符串 string 執(zhí)行消息體編碼。

編碼格式的類(lèi)型 (base64 或 quoted-printable) 將取決于 body_encoding 屬性。

Charset 類(lèi)還提供了一些方法以支持標(biāo)準(zhǔn)運(yùn)算和內(nèi)置函數(shù)。

__str__()?

input_charset 以強(qiáng)制轉(zhuǎn)為小寫(xiě)的字符串形式返回。 __repr__()__str__() 的別名。

__eq__(other)?

這個(gè)方法允許你對(duì)兩個(gè) Charset 實(shí)例進(jìn)行相等比較。

__ne__(other)?

這個(gè)方法允許你對(duì)兩個(gè) Charset 實(shí)例進(jìn)行相等比較。

email.charset 模塊還提供了下列函數(shù)用于向全局字符集、別名以及編解碼器注冊(cè)表添加新條目:

email.charset.add_charset(charset, header_enc=None, body_enc=None, output_charset=None)?

向全局注冊(cè)表添加字符特征屬性。

charset 是輸入字符集,它必須為某個(gè)字符集的正規(guī)名稱(chēng)。

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 is only valid for header_enc. The default is None for no encoding.

可選的 output_charset 是輸出所應(yīng)當(dāng)采用的字符集。 當(dāng) Charset.convert() 方法被調(diào)用時(shí)將會(huì)執(zhí)行從輸入字符集到輸出字符集的轉(zhuǎn)換。 默認(rèn)情況下輸出字符集將與輸入字符集相同。

input_charsetoutput_charset 都必須在模塊的字符集-編解碼器映射中具有 Unicode 編解碼器條目;使用 add_codec() 可添加本模塊還不知道的編解碼器。 請(qǐng)參閱 codecs 模塊的文檔來(lái)了解更多信息。

全局字符集注冊(cè)表保存在模塊全局字典 CHARSETS 中。

email.charset.add_alias(alias, canonical)?

添加一個(gè)字符集別名。 alias 為特定的別名,例如 latin-1canonical 是字符集的正規(guī)名稱(chēng),例如 iso-8859-1。

全局字符集注冊(cè)表保存在模塊全局字典 ALIASES 中。

email.charset.add_codec(charset, codecname)?

添加在給定字符集的字符和 Unicode 之間建立映射的編解碼器。

charset 是某個(gè)字符集的正規(guī)名稱(chēng)。 codecname 是某個(gè) Python 編解碼器的名稱(chēng),可以被用來(lái)作為 strencode() 方法的第二個(gè)參數(shù)。