stringprep —インターネット文字列の準備
ソースコード: :source: `Lib / stringprep.py`
インターネットで物事(ホスト名など)を識別する場合、そのような識別を「同等」と比較する必要があることがよくあります。 この比較がどのように実行されるかは、アプリケーションドメインによって異なります。 大文字と小文字を区別しないかどうか。 「印刷可能な」文字で構成される識別のみを許可するために、可能な識別を制限する必要がある場合もあります。
RFC 3454 は、インターネットプロトコルでUnicode文字列を「準備」するための手順を定義します。 文字列をワイヤーに通す前に、準備手順で処理され、その後、特定の正規化された形式になります。 RFCは、プロファイルに組み合わせることができる一連のテーブルを定義しています。 各プロファイルは、使用するテーブルと、stringprep
プロシージャの他のオプション部分がプロファイルの一部であるかどうかを定義する必要があります。 stringprep
プロファイルの一例は、国際化ドメイン名に使用されるnameprep
です。
モジュール stringprep は、 RFC 3454 からのテーブルのみを公開します。 これらのテーブルは辞書またはリストとして表すには非常に大きいため、モジュールは内部でUnicode文字データベースを使用します。 モジュールのソースコード自体は、mkstringprep.py
ユーティリティを使用して生成されました。
その結果、これらのテーブルはデータ構造としてではなく、関数として公開されます。 RFCには、セットとマッピングの2種類のテーブルがあります。 セットの場合、 stringprep は「特性関数」を提供します。 パラメータがセットの一部である場合にTrue
を返す関数。 マッピングの場合、マッピング関数を提供します。キーを指定すると、関連する値を返します。 以下は、モジュールで使用可能なすべての機能のリストです。
- stringprep.in_table_a1(code)
- code がtableA.1(Unicode 3.2では割り当てられていないコードポイント)にあるかどうかを確認します。
- stringprep.in_table_b1(code)
- code がtableB.1にあるかどうかを判別します(通常は何にもマップされません)。
- stringprep.map_table_b2(code)
- tableB.2(NFKCで使用されるケースフォールディングのマッピング)に従って、 code のマップされた値を返します。
- stringprep.map_table_b3(code)
- tableB.3(正規化なしで使用されるケースフォールディングのマッピング)に従って、 code のマップされた値を返します。
- stringprep.in_table_c11(code)
- コードがtableC.1.1(ASCIIスペース文字)にあるかどうかを判別します。
- stringprep.in_table_c12(code)
- コードがtableC.1.2(非ASCIIスペース文字)にあるかどうかを判別します。
- stringprep.in_table_c11_c12(code)
- code がtableC.1(スペース文字、C.1.1とC.1.2の和集合)にあるかどうかを判別します。
- stringprep.in_table_c21(code)
- コードがtableC.2.1(ASCII制御文字)にあるかどうかを判別します。
- stringprep.in_table_c22(code)
- コードがtableC.2.2(非ASCII制御文字)にあるかどうかを判別します。
- stringprep.in_table_c21_c22(code)
- コードがtableC.2(制御文字、C.2.1とC.2.2の和集合)にあるかどうかを判別します。
- stringprep.in_table_c3(code)
- コードがtableC.3(私用)にあるかどうかを確認します。
- stringprep.in_table_c4(code)
- code がtableC.4(文字以外のコードポイント)にあるかどうかを確認します。
- stringprep.in_table_c5(code)
- コードがtableC.5(サロゲートコード)にあるかどうかを確認します。
- stringprep.in_table_c6(code)
- コードがtableC.6(プレーンテキストには不適切)にあるかどうかを確認します。
- stringprep.in_table_c7(code)
- コードがtableC.7にあるかどうかを判別します(正規表現には不適切)。
- stringprep.in_table_c8(code)
- code がtableC.8にあるかどうかを確認します(表示プロパティを変更するか、非推奨になります)。
- stringprep.in_table_c9(code)
- コードがtableC.9(タグ付け文字)にあるかどうかを判別します。
- stringprep.in_table_d1(code)
- code がtableD.1(双方向プロパティ「R」または「AL」の文字)にあるかどうかを判別します。
- stringprep.in_table_d2(code)
- コードがtableD.2(双方向プロパティ「L」の文字)にあるかどうかを判別します。