email.charset :文字セットを表す
ソースコード: :source: `Lib / email / charset.py`
このモジュールは、レガシー(Compat32
)電子メールAPIの一部です。 新しいAPIでは、エイリアステーブルのみが使用されます。
このセクションの残りのテキストは、モジュールの元のドキュメントです。
このモジュールは、電子メールメッセージで文字セットと文字セット変換を表すためのクラス Charset 、文字セットレジストリ、およびこのレジストリを操作するためのいくつかの便利なメソッドを提供します。 Charset のインスタンスは、 email パッケージ内の他のいくつかのモジュールで使用されます。
このクラスを email.charset モジュールからインポートします。
- class email.charset.Charset(input_charset=DEFAULT_CHARSET)
文字セットを電子メールプロパティにマップします。
このクラスは、特定の文字セットの電子メールに課せられる要件に関する情報を提供します。 また、該当するコーデックが利用できる場合、文字セット間で変換するための便利なルーチンも提供します。 文字セットを指定すると、RFC準拠の方法で電子メールメッセージでその文字セットを使用する方法に関する情報を提供するために最善を尽くします。
特定の文字セットは、電子メールのヘッダーまたは本文で使用する場合、quoted-printableまたはbase64でエンコードする必要があります。 特定の文字セットは完全に変換する必要があり、電子メールでは許可されていません。
オプションの input_charset は以下のとおりです。 常に小文字に強制変換されます。 エイリアスで正規化された後、文字セットのレジストリを検索して、文字セットに使用されるヘッダーエンコーディング、本文エンコーディング、および出力変換コーデックを見つけるためにも使用されます。 たとえば、 input_charset が
iso-8859-1
の場合、ヘッダーと本文はquoted-printableを使用してエンコードされ、出力変換コーデックは必要ありません。 input_charset がeuc-jp
の場合、ヘッダーはbase64でエンコードされ、本文はエンコードされませんが、出力テキストはeuc-jp
文字セットからiso-2022-jp
文字セット。Charset インスタンスには、次のデータ属性があります。
- input_charset
指定された初期文字セット。 一般的なエイリアスは、公式メール名に変換されます(例:
latin_1
はiso-8859-1
に変換されます。 デフォルトは7ビットus-ascii
です。
- header_encoding
電子メールヘッダーで使用する前に文字セットをエンコードする必要がある場合、この属性は
Charset.QP
(quoted-printableの場合)、Charset.BASE64
(base64エンコードの場合)、または[ X179X] は、最短のQPまたはBASE64エンコーディングです。 それ以外の場合は、None
になります。
- body_encoding
header_encoding と同じですが、メールメッセージの本文のエンコーディングを記述します。これは、実際にはヘッダーエンコーディングとは異なる場合があります。
Charset.SHORTEST
は、 body_encoding では許可されていません。
- output_charset
一部の文字セットは、電子メールのヘッダーまたは本文で使用する前に変換する必要があります。 input_charset がそれらの1つである場合、この属性には、出力が変換される文字セットの名前が含まれます。 それ以外の場合は、
None
になります。
- input_codec
input_charset をUnicodeに変換するために使用されるPythonコーデックの名前。 変換コーデックが必要ない場合、この属性は
None
になります。
- output_codec
Unicodeを output_charset に変換するために使用されるPythonコーデックの名前。 変換コーデックが必要ない場合、この属性は input_codec と同じ値になります。
Charset インスタンスにも次のメソッドがあります。
- get_body_encoding()
ボディエンコーディングに使用されるコンテンツ転送エンコーディングを返します。
これは、使用するエンコードに応じて文字列
quoted-printable
またはbase64
のいずれかであるか、関数です。この場合、単一の引数を使用して関数を呼び出す必要があります。メッセージオブジェクトはエンコードされます。 次に、関数は Content-Transfer-Encoding ヘッダー自体を適切なものに設定する必要があります。body_encoding が
QP
の場合は文字列quoted-printable
を返し、 body_encoding がBASE64
の場合は文字列base64
を返します。それ以外の場合は、文字列7bit
を返します。
- get_output_charset()
出力文字セットを返します。
これは、
None
でない場合は、 output_charset 属性です。それ以外の場合は、 input_charset です。
- header_encode(string)
ヘッダー-文字列 string をエンコードします。
エンコーディングのタイプ(base64またはquoted-printable)は、 header_encoding 属性に基づきます。
- header_encode_lines(string, maxlengths)
ヘッダー-文字列を最初にバイトに変換してエンコードします。
これは header_encode()に似ていますが、引数 maxlengths で指定された最大行長に文字列が収まる点が異なります。これは、イテレータである必要があります。このイテレータから返される各要素は、次の最大行長。
- body_encode(string)
文字列 string を本文エンコードします。
エンコーディングのタイプ(base64またはquoted-printable)は、 body_encoding 属性に基づきます。
Charset クラスは、標準操作と組み込み関数をサポートするための多数のメソッドも提供します。
- __str__()
input_charset を小文字に強制変換された文字列として返します。
__repr__()
は、 __ str __()のエイリアスです。
- __eq__(other)
このメソッドを使用すると、2つの Charset インスタンスが等しいかどうかを比較できます。
- __ne__(other)
このメソッドを使用すると、2つの Charset インスタンスの不等式を比較できます。
email.charset モジュールは、グローバル文字セット、エイリアス、およびコーデックレジストリに新しいエントリを追加するための次の関数も提供します。
- email.charset.add_charset(charset, header_enc=None, body_enc=None, output_charset=None)
文字のプロパティをグローバルレジストリに追加します。
charset は入力文字セットであり、文字セットの正規名である必要があります。
オプションの header_enc および body_enc は、quoted-printableの場合は
Charset.QP
、base64エンコーディングの場合はCharset.BASE64
、quotedの最短の場合はCharset.SHORTEST
のいずれかです。 -printableまたはbase64エンコーディング、またはエンコーディングなしの場合はNone
。SHORTEST
は、 header_enc に対してのみ有効です。 エンコードなしの場合、デフォルトはNone
です。オプションの output_charset は、出力が含まれるべき文字セットです。 メソッド
Charset.convert()
が呼び出されると、変換は入力文字セットからUnicode、出力文字セットに進みます。 デフォルトでは、入力と同じ文字セットで出力されます。input_charset と output_charset の両方で、モジュールの文字セットからコーデックへのマッピングにUnicodeコーデックエントリが必要です。 add_codec()を使用して、モジュールが認識していないコーデックを追加します。 詳細については、コーデックモジュールのドキュメントを参照してください。
グローバル文字セットレジストリは、モジュールグローバルディクショナリ
CHARSETS
に保持されます。
- email.charset.add_alias(alias, canonical)
文字セットエイリアスを追加します。 alias はエイリアス名です。例:
latin-1
。 canonical は、文字セットの正規名です。例:iso-8859-1
。グローバル文字セットエイリアスレジストリは、モジュールグローバルディクショナリ
ALIASES
に保持されます。
- email.charset.add_codec(charset, codecname)
指定された文字セットの文字をUnicodeとの間でマップするコーデックを追加します。
charset は、文字セットの正規名です。 codecname は、 str の encode()メソッドの2番目の引数に適切なPythonコーデックの名前です。