このモジュールでは、内部的な Python codec レジストリに対するアクセス手 段を提供しています。codec レジストリは、標準の Python codec(エンコー ダとデコーダ)の基底クラスを定義し、codec およびエラー処理の検索手順を 管理しています。
codecs では以下の関数を定義しています:
search_function) |
(encoder,
decoder, stream_reader,stream_writer)
を返すことに
なっています。戻り値の関数が取る引数は以下の通りです。
encoder と decoder: これらの引数は、Codec インスタンスの encode()とdecode() (Codec Interface 参照) と同じ インタフェースを持つ関数、またはメソッドでなければなりません。これらの関 数・メソッドは内部状態を持たずに動作する (stateless mode) と想定されて います。
stream_reader と stream_writer: これらの引数は、次のような インタフェースを持つファクトリ関数でなければなりません:
factory(stream, errors='strict')
ファクトリ関数は、基底クラスの StreamWriter や StreamReader が定義しているインタフェースを提供する オブジェクトを返さねばなりません。ストリーム codecs は内部状態を維持で きます。
errors が取り得る値は、
'strict'
(エンコーディングエラーの際に例外を発生)、
'replace'
(奇形データを "?"等の適切な文字で置換)、
'ignore'
(奇形データを無視し何も通知せずに処理を継続)、
'xmlcharrefreplace''
(適切な XML 文字参照で置換
(エンコーディングのみ))、
および 'backslashreplace'
(バックスラッシュによるエスケープシーケンス
(エンコーディングのみ)) と、register_error() で定義されたその他の
エラー処理名になります。
検索関数は、与えられたエンコーディングを見つけられなかった場合、
None
を返さねばなりません。
encoding) |
encoding の検索は、まずにレジストリのキャッシュから行います。 見つからなければ、登録されている検索関数のリストから探します。 見つからなければ、LookupError を送出し、見つかれば codec のタプルをキャッシュに保存して、見つかったエンコーディングを呼び出し側 に返します。
さまざまな codec へのアクセスを簡便化するために、このモジュールは以下 のような関数を提供しています。これらの関数は、 codec の検索に lookup() を使います。
encoding) |
encoding が見つからなければ LookupError を送出します。
encoding) |
encoding が見つからなければ LookupError を送出します。
encoding) |
encoding が見つからなければ LookupError を送出します。
encoding) |
encoding が見つからなければ LookupError を送出します。
name, error_handler) |
error_handler はエラーの場所に関する情報の入った UnicodeEncodeError インスタンスとともに呼び出されます。 エラー処理関数はこの例外を送出するか、別の例外を送出するか、または 入力のエンコードができなかった部分の代替文字列とエンコードを再開する 場所の指定が入ったタプルを返すかしなければなりません。最後の場合、 エンコーダは代替文字列をエンコードし、元の入力中の指定位置から エンコードを再開します。位置を負の値にすると、入力文字列の末端からの 相対位置として扱われます。境界の外側にある位置を返した場合には IndexError が送出されます。
デコードと翻訳は同様に働きますが、エラー処理関数に渡されるのが UnicodeDecodeError かUnicodeTranslateError である点と、エラー処理関数の置換した内容が直接出力になる点が異なります。
name) |
エラー処理関数が見つからなければ LookupError を送出します。
exception) |
strict
エラー処理の実装です。
exception) |
replace
エラー処理の実装です。
exception) |
ignore
エラー処理の実装です。
exception) |
xmlcharrefreplace
エラー処理の実装です。
exception) |
backslashreplace
エラー処理の実装です。
エンコードされたファイルやストリームの処理を簡便化するため、, このモジュ ールは次のようなユーティリティ関数を定義しています。
filename, mode[, encoding[, errors[, buffering]]]) |
注意: ラップ版のファイルオブジェクトを操作する関数は、該当する codec が定義している形式のオブジェクトだけを受け付けます。 多くの組み込み codec では Unicode オブジェクトです。 関数の戻り値も codec に依存し、通常は Unicode オブジェクトです。
encoding にはファイルのエンコーディングを指定します。
errors を指定して、エラー処理を定義することもできます。デフォルト
では 'strict'
で、エンコード時にエラーがあれば
ValueError を送出します。
buffering は、組み込み関数 open() と同じです。デフォル トでは行バッファリングです。
file, input[, output[, errors]]) |
ラップされたファイルに書かれた文字列は、input に指定したエンコー ディングに従って変換され、output に指定したエンコーディングを使っ て string 型に変換され、ファイルに書き込まれます。中間エンコーディング は指定された codecs に依存しますが、普通は Unicode です。
output が与えられなければ、input がデフォルトになります。
errors を与えて、エラー処理を定義することもできます。デフォルト
では 'strict'
で、エンコード時にエラーがあれば
ValueError を送出します。
このモジュールは以下のような定数を定義しています。プラットフォーム依存なファ イルを読み書きするのに役立ちます。