バージョン 2.3 で 新たに追加 された仕様です。
(ホスト名のような) インターネット上にある存在に識別名をつける際、 しばしば識別名間の ``等価性'' 比較を行う必要があります。 厳密には、例えば大小文字の区別をするかしないかいったように、 比較をどのように行うかはアプリケーションの領域に依存します。 また、例えば ``印字可能な'' 文字で構成された識別名だけを許可すると いったように、可能な識別名を制限することも必要となるかもしれません。
RFC 3454 では、インターネットプロトコル上で Unicode 文字列を
``調製 (prepare)'' するためのプロシジャを定義しています。文字列は
通信路に載せられる前に調製プロシジャで処理され、その結果ある正規化
された形式になります。RFC ではあるテーブルの集合を定義しており、
それらはプロファイルにまとめられています。各プロファイルでは、どの
テーブルを使い、stringprep
プロシジャのどのオプション部分が
プロファイルの一部になっているかを定義しています。
stringprep
プロファイルの一つの例は nameprep
で、
国際化されたドメイン名に使われます。
stringprep は RFC 3453 のテーブルを公開しているに
過ぎません。これらのテーブルは辞書やリストとして表 現するには
バリエーションが大きすぎるので、このモジュールでは Unicode
文字データベースを内部的に利用しています。モジュールソースコード
自体は mkstringprep.py
ユーティリティを使って生成されました。
その結果、これらのテーブルはデータ構造体ではなく、関数として 公開されています。RFC には 2 種類のテーブル: 集合およびマップ、 が存在します。集合については、stringprep は ``特性関数 (characteristic function)'' 、すなわち引数が 集合の一部である場合に真を返す関数を提供します。マップに対しては、 マップ関数: キーが与えられると、それに関連付けられた値を返す関数、 を提供します。以下はこのモジュールで利用可能な全ての関数を列挙した ものです。
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |
code) |