[1] > [[IDNA]] は[[国際化名札]]を既存の[[応用]]で処理するために [DFN[ACE [RUBY[名札][ラベル]@en[label]]]]を用います ([[ACE]] は[[ASCII互換符号化]]の略です)。 [[ACE名札]]は[[ASCII]]で表現できる[[国際化名札]]であり、 [[ASCII]]で表現できない[[国際化名札]]と[[等価]]です。 [[ASCII]] で表現できない任意の[[国際化名札]]は、 [CODE@en[[[ToASCII]]]] [[操作]]により[[等価]]な[[ACE名札]]に変換できます ([[ASCII名札]]は [CODE@en[[[ToASCII]]]] で変更されません)。 [[ACE名札]]は[[利用者]]への表示用としては適当ではありません。 [CODE@en[[[ToUnicode]]]] [[操作]]は任意の[[名札]]を[[等価]]な[[非ACE名札]]に変換します。 正式には[[ACE名札]]は [CODE@en[[[ToUnicode]]]] [[操作]]により変更される[[名札]]と定義します ([[非ACE名札]]は [CODE@en[[[ToUnicode]]]] で変更されません)。 すべての [[ACE名札]]は5章で規定する[[ACE接頭辞]]から始まります。 [SRC[>>3]] * 仕様書 - [2] [CITE@en[RFC 3490 - Internationalizing Domain Names in Applications (IDNA)]] -- [3] '''''' -- [4] -- [8] * 要件 [5] 表示や入力に使う[[ACEラベル]]は、[[ACE接頭辞]]を常に含んでいなければ[['''なりません''']]。 [SRC[>>4]] [6] [[ACEラベル]]を入力や表示に使っても[['''構いません''']]が、[[デバッグ]]その他の特別な場合や、 表示上の制約がある場合などを除き、[RUBYB[おすすめ]@en[encouraged]]しません。 [SRC[>>4]] [7] [[名前ラベル]]が [[ACE]] として符号化されている場合に、 [[ACEラベル]]のまま表示するか[[復号]]して表示するかを[[利用者]]に選ばせても[['''構いません''']]が、 [[既定値]]は [[ACEラベル]]とする[['''べきではありません''']]。 [SRC[>>4]] [9] [[アプリケーション]]が [[ToUnicode]] で [[ACE]] を[[復号]]した結果の[[ドメイン名]]をすべて[[レンダリング]]できない場合には、 [[U+FFFD]] に置き換えて表示するのではなく、[[ACE]] に変換して表示する[['''べきです''']]。 そのような[[アプリケーション]]にあっては、 [[ToUnicode]] [[演算]]によって得られる[[ドメイン名]]を表示する仕組みも持つ[['''べきです''']]。 [SRC[>>8]] ;; [10] >>9 のような要件って、[[内部コード]]が [[Unicode]] ベースになっていて、 [[フォント]]に[[グリフ]]があるかが[[レンダリング]]のライブラリーに通常は隠蔽されているようなありがちなシステムだと、 実装が面倒くさいですよね。[[コピペビリティー]]への言及が仕様書にはあったりするので、 [[内部コード]]が[[シフトJIS]]のような、[[符号]]変換によって情報が落ちてしまうシステムを想定しているのでしょうか・・・?