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_charset 為
iso-8859-1
,則標(biāo)頭和消息體將會(huì)使用 quoted-printable 來(lái)編碼并且不需要輸出轉(zhuǎn)換編解碼器。 如果 input_charset 為euc-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), orcharset.SHORTEST
for the shortest of QP or BASE64 encoding. Otherwise, it will beNone
.
- 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-printable
或base64
,或是返回一個(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_encoding 為
QP
則返回字符串quoted-printable
,如果 body_encoding 為BASE64
則返回字符串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ù)。
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, orNone
for no encoding.SHORTEST
is only valid for header_enc. The default isNone
for no encoding.可選的 output_charset 是輸出所應(yīng)當(dāng)采用的字符集。 當(dāng)
Charset.convert()
方法被調(diào)用時(shí)將會(huì)執(zhí)行從輸入字符集到輸出字符集的轉(zhuǎn)換。 默認(rèn)情況下輸出字符集將與輸入字符集相同。input_charset 和 output_charset 都必須在模塊的字符集-編解碼器映射中具有 Unicode 編解碼器條目;使用
add_codec()
可添加本模塊還不知道的編解碼器。 請(qǐng)參閱codecs
模塊的文檔來(lái)了解更多信息。全局字符集注冊(cè)表保存在模塊全局字典
CHARSETS
中。
- email.charset.add_alias(alias, canonical)?
添加一個(gè)字符集別名。 alias 為特定的別名,例如
latin-1
。 canonical 是字符集的正規(guī)名稱(chēng),例如iso-8859-1
。全局字符集注冊(cè)表保存在模塊全局字典
ALIASES
中。