UseSTD3ASCIIRules

UseSTD3ASCIIRules

[1] ToASCII 演算ToUnicode 演算には、入力としてフラグ UseSTD3ASCIIRules があります。

これは、入力であるラベルに対して、 STD 3 が規定する ASCII文字に関する制約を適用するかを指定します。 この検査を行うかどうかの従来の動作を維持するために用意されています。

[9] 「従来の動作」が何なのかあまりはっきりとは書かれていませんが、 _ など LDH 以外の文字の使用を認めることを指している模様です。 必ずしもすべてのASCII文字を認めることは意味しておらず、 ToUnicodeToASCII の外側で実装依存な制約が課されるのが普通です。

仕様書

IDNA2003 での意味

[5] IDNA2003 では ToASCII 演算ToUnicode 演算UseSTD3ASCIIRules フラグが使われています。

[3] この「STD 3 の制約」というのが何を指すのかあまりはっきりとは書いてありませんが、 ToASCII 演算の定義によれば LDH でないASCII文字を排除することを指すようです。

[6] - を最初や最後で使ってはいけないという制約はこのフラグとは別途チェックされています。

[7] ToASCII 演算では、このフラグが設定されていれば、 LDH でないASCII文字が含まれていると失敗とみなされます。

[8] ToUnicode 演算では、このフラグが設定されていれば、 LDH でないASCII文字が含まれていると元の入力と同じものが出力となります。

UTS #46

[10] UTS #46 でも IDNA2003 と同じく UseSTD3ASCIIRules フラグがあります。このフラグに設定することが強く推奨されています >>4

[13] IDNA2003 ではこのフラグは設定されているかいないかですが、 UTS #46 ではかとされています。

[11] このフラグに設定されているか否かによってIDNA写像表の定義が変わります。 (IDNA写像表の項を参照。)

[12] このフラグの場合はラベル妥当性について実装依存の制約を課すこととなります。 (ラベルの項を参照。)

メモ

[14] IDNA2008 では導出特性値UラベルAラベルの定義上、結果的に UseSTD3ASCIIRules フラグが設定された状態に相当するようになっている模様です。