[10] [[LDHラベル]]を拡張して[[非ASCII文字]]を利用できるようにしたものを、 [DFN[[RUBYB[国際化ラベル]@en[internationalized label]]]]といいます。 * 仕様書 - [6] [[IDNA2003]] [CITE@en[RFC 3490 - Internationalizing Domain Names in Applications (IDNA)]] -- [3] '''''' -- [7] - [11] [[IDNA2008]] [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]] -- [12] '''''' -- [15] * 定義 ** IDNA2003 の定義 [1] > [DFN[[RUBY[国際化][こくさいか]@en[internationalized]][RUBYB[ラベル]@en[label]]]]は、 [CODE@en[[[ToASCII]]]] [[操作]] [WEAK[([[フラグ]] [CODE@en[[[UseSTD3ASCIIRules]]]] は未設定)]] が[[失敗]]しないような[[ラベル]]です。 [[STD 13]] の長さ制限を満たす[[各ASCIIラベル]]は[[国際化ラベル]]です。 従って[Q[[[国際化ラベル]]]]は従来の [[ASCIIラベル]]と新しい[[非ASCIIラベル]]の両方を含む一般化した[[用語]]です。 ほとんどの [[Unicode]] [[文字]]が[[国際化ラベル]]中に現れることができますが、 入力文字列によっては [CODE@en[[[ToASCII]]]] が[[失敗]]することがあり、そのような[[文字列]]は[[妥当]]な[[国際化ラベル]]ではありません。 [SRC[>>3]] ** IDNA2008 の定義 [13] [[IDN]] の1つの[[ラベル]]、すなわち[[Aラベル]]、[[Uラベル]]、[[NR-LDHラベル]]のいずれかである[[ラベル]]を[DFN[[RUBYB[国際化ラベル]@en[internationalized label]]]]といいます。 [[下線ラベル]]などは[[国際化ラベル]]ではありません。 [SRC[>>12]] ** メモ [14] [[IDNA2003]] では[[LDHラベル]]の条件を満たさなくても[[テキスト・ラベル]]であれば[[国際化ラベル]]に含まれましたが、 [[IDNA2008]] では [[LDHラベル]]と [[Uラベル]]だけが[[国際化ラベル]]です。 [[ToASCII]]が失敗しない[[非ASCII]] [[文字列]]の[[集合]]と[[Uラベル]]である[[文字列]]の[[集合]]も異なっています。 * 比較 [16] [[IDNA2003]] も [[IDNA2008]] も、 [[ASCII]] による ([[Punycode]] による) 表現に変換した上で[[ASCII大文字・小文字不区別]]で[[一致]]するかどうかを[[等価]]であることの定義としています。 [23] 両者とも表面的には同じ定義になっていますが、実際には [[IDNA2003]] の [[ToASCII]] [[演算]]と [[IDNA2008]] の[[Aラベル]]への変換が大きく異なっているので、[[等価性]]の定義も実は大きく異なっています。 ** IDNA2003 における等価性の定義 [2] [SRC[>>3]] > [[IDNA]] では、[[ラベル]]の[[等価性]]はそれが [[ASCIIラベル]]であるか否かに関わらず、 [CODE@en[[[ToASCII]]]] [[演算]]によって [[ASCII]] 形を構築した上で定義されます。 [[ラベル]]は、 [CODE@en[[[ToASCII]]]] によって生成した [[ASCII]] 形が[[大文字・小文字不区別]]の [[ASCII]] [[比較]]により[[一致]]する場合、その場合に限って、 [RUBY[[[等価]]][とうか]@en[equivalent]]であるとします。 [[ASCIIラベル]]に対しては[[大文字]]と[[小文字]]は[[等価]]とみなすという[[等価性]]が既に存在します。 [[IDNA]] での[[等価性]]はこの従来の[[等価性]]の拡張になります。 [CODE(example)@en[foo]] と [CODE(example)@en[Foo]] が同じ[[ラベル]]の別の形であるのと同様に、 [[IDNA]] において[[等価]]な[[ラベル]]は同じ[[ラベル]]の別の形であるものとして取り扱います。 ** IDNA2008 における等価性の定義 [17] [[IDNA]] では、[[Aラベル]]による表現が[[大文字・小文字不区別]]で等しければ、 その[[ラベル]]がどの形で表現されていたかによらず、[[等価]]であるとします。 [SRC[>>15]] [18] 実際には [[Aラベル]]と [[Uラベル]]の[RUBYB[[[同形性]]]@en[isomorphism]]により、 [[Uラベル]]同士を直接比較することができます。 [SRC[>>15]] [19] まとめると、 - [20] [[Uラベル]]が[[ビット列]]として等しい [SRC[>>15]] - [21] [[Aラベル]]が従来の [[DNS]] の[[ASCII大文字・小文字不区別]]の一致により等しい [SRC[>>15]] - [22] [[Uラベル]]を[[Aラベル]]に変換した上で、[[Aラベル]]が従来の [[DNS]] の[[ASCII大文字・小文字不区別]]の一致により等しい [SRC[>>15]] ... のいずれかの時、2つの[[ラベル]]は[[等価]]です。 (また、 [[NR-LDHラベル]]は従来の [[DNS]] の [[ASCII大文字・小文字不区別]]の一致により等しいかが決まります。) * DNS 鯖における取り扱い (IDNA2003) [8] [[ゾーン]]に蓄積される[[ドメイン名]]は、 [[Stringprep]] における[[蓄積文字列]]の規則に従います。 [SRC[>>7]] [9] [[DNS鯖]]は、 [[ASCII]] で表現できない[[国際化ラベル]]は、 [[ToASCII]] [[演算]]を適用し、 [[ACE]] 形を使って表現しなければ[['''なりません''']]。 [SRC[>>7]] * 関連 [4] [[国際化ラベル]]に対し、[[ASCII文字]]のみの[[ラベル]]を[[ASCIIラベル]]といいます。 [[ASCIIラベル]]は[[国際化ラベル]]の[[部分集合]]です。 [5] [[国際化ラベル]]の [[Punycode]] 化表現は [[ACEラベル]] ([[IDNA2003]]) や [[Aラベル]] ([[IDNA2008]]) といいます。[[IDNA2003]] はこの[[国際化ラベル]]から [[ASCIIラベル]]への変換を「[[ToASCII]] [[演算]]」として規定しています。 [24] には「IDN labels」 という語がありますが、「[[国際化ラベル]]」の意でしょうか。