このモジュールでは、内部的な Python codec レジストリに対するアクセス手 段を提供しています。codec レジストリは、標準の Python codec(エンコー ダとデコーダ)の基底クラスを定義し、codec およびエラー処理の検索手順を 管理しています。
codecs では以下の関数を定義しています:
search_function) |
name
エンコーディング名
encoder
内部状態を持たないエンコード関数
decoder
内部状態を持たないデコード関数
incrementalencoder
漸増的エンコーダクラスまたはファクトリ関数
incrementaldecoder
漸増的デコーダクラスまたはファクトリ関数
streamwriter
ストリームライタクラスまたはファクトリ関数
streamreader
ストリームリーダクラスまたはファクトリ関数
種々の関数やクラスが以下の引数をとります。
encoder と decoder: これらの引数は、Codec インスタンスの encode()とdecode() (Codec Interface 参照) と同じ インタフェースを持つ関数、またはメソッドでなければなりません。これらの関 数・メソッドは内部状態を持たずに動作する (stateless mode) と想定されて います。
incrementalencoder と incrementaldecoder: これらは 以下のインタフェースを持つファクトリ関数でなければなりません。
factory(errors='strict')
ファクトリ関数は、それぞれ基底クラスの IncrementalEncoder や IncrementalDecoder が定義しているインタフェースを提供する オブジェクトを返さねばなりません。漸増的 codecs は内部状態を維持できます。
streamreader と streamwriter: これらの引数は、次のような インタフェースを持つファクトリ関数でなければなりません:
factory(stream, errors='strict')
ファクトリ関数は、基底クラスの StreamWriter や StreamReader が定義しているインタフェースを提供する オブジェクトを返さねばなりません。ストリーム codecs は内部状態を維持で きます。
errors が取り得る値は、
'strict'
(エンコーディングエラーの際に例外を発生)、
'replace'
(奇形データを "?"等の適切な文字で置換)、
'ignore'
(奇形データを無視し何も通知せずに処理を継続)、
'xmlcharrefreplace''
(適切な XML 文字参照で置換
(エンコーディングのみ))、
および 'backslashreplace'
(バックスラッシュによるエスケープシーケンス
(エンコーディングのみ)) と、register_error() で定義されたその他の
エラー処理名になります。
検索関数は、与えられたエンコーディングを見つけられなかった場合、
None
を返さねばなりません。
encoding) |
エンコーディングの検索は、まずレジストリのキャッシュから行います。 見つからなければ、登録されている検索関数のリストから探します。 CodecInfo オブジェクトが一つも見つからなければ LookupError を送出します。 見つかったら、その CodecInfo オブジェクトはキャッシュに保存され、 呼び出し側に返されます。
さまざまな codec へのアクセスを簡便化するために、このモジュールは以下 のような関数を提供しています。これらの関数は、 codec の検索に lookup() を使います。
encoding) |
encoding が見つからなければ LookupError を送出します。
encoding) |
encoding が見つからなければ LookupError を送出します。
encoding) |
encoding が見つからない、もしくは codec が漸増的エンコーダをサポートしないとき LookupError を送出します。 バージョン 2.5 で 新たに追加 された仕様です。
encoding) |
encoding が見つからない、もしくは codec が漸増的デコーダをサポートしないとき LookupError を送出します。 バージョン 2.5 で 新たに追加 された仕様です。
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 を送出します。
iterable, encoding[, errors]) |
iterable, encoding[, errors]) |
このモジュールは以下のような定数も定義しています。プラットフォーム依存なファ イルを読み書きするのに役立ちます。