[15] [DFN@en[[[IDNA]]]] ([DFN@en[Internationalizing Domain Names in Applications]]) は、 [[IDN]] ([[国際化ドメイン名]]) を[[インターネット]]の様々な[[アプリケーション]]で扱うための技術です。 [17] [[IDNA]] では、既存の[[プロトコル]]や実働しているシステムへの変更無しで [[IDN]] を扱うために、 [[IDN]] を [[ASCII文字]]に転写し、 [[IDN]] と [[ASCII]] の[[ドメイン名]]との変換を末端の[[アプリケーション]]内で行います。この [[ASCII文字]]への転写法としては [[Punycode]] が採用されています。また、似た[[文字]]の[[正規化]]の方法として [[Stringprep]] が規定されています。 [[IDNA]] を実装するには、 [[Punycode]] と [[Stringprep]] を実装しなければ[['''なりません''']] [SRC[[[RFC 3490]] 1.3]]。 * 版 [16] [[IDNA]] には2つの (非互換な) 版があります。 - [13] [[IDNA2003]] - [14] [[IDNA2008]] * 演算 ** ドメイン名に対する演算 [27] [[ドメイン名]]は次のように処理します。 = [21] まず、 [[ASCII]] や [[Unicode]] で[[符号化]]されていない文字列なら、 [[Unicode]] に変換します。 = [22] [[Stringprep]] でいうところの[[蓄積文字列]]と[[照合文字列]]のいずれかを決定します。 -- [[照合文字列]]であるなら、 [[AllowUnassigned]] [[フラグ]]を設定します。 = [23] [[ラベル分離子]]によって[[ドメイン名]]をそれぞれの[[ラベル]]に分割します。 = [24] 各[[ラベル]]に対して、 [[STD 3]] における[[ホスト名]]の [[ASCII文字]]に関する制限を適用するかどうかを決めます。 -- これは [[IDNA]] 以前から必要な作業であり、 [[IDNA]] 仕様はどちらにするか特に推奨するものではない、とされています。 -- この制限を適用するなら、 [[UseSTD3ASCIIRules]] [[フラグ]]を設定します。 = [25] [[ToASCII]] と [[ToUnicode]] のどちらか、適切な方を適用します。 = [26] [[ToASCII]] を適用したなら、[[ラベル分離子]]をすべて [CODE(char)[[[U+002E]]]] [CODE(charname)@en[[[FULL STOP]]]] に置き換えます。 ;; [28] [[RFC 3490]] ** ラベルに対する演算 [18] [[IDNA]] では[[ラベル]]に対して次の2つの[[演算]]が定義されています。 - [19] [[ToASCII]] - [20] [[ToUnicode]] * メモ [12] [CITE@en[RFC 5992 - Internationalized Domain Names Registration and Administration Guidelines for European Languages Using Cyrillic]] ([TIME[2010-10-05 09:48:08 +09:00]] 版)