モジュール java.base
パッケージ java.net

クラスIDN

java.lang.Object
java.net.IDN

public final class IDN extends Object
通常のUnicode表現とASCII互換エンコーディング(ACE)表現との間で国際化ドメイン名(IDN)の変換を行うメソッドを提供します。 国際化ドメイン名がUnicodeの全範囲の文字を使用できるのに対し、従来のドメイン名はASCII文字に制限されています。 ACEはASCII文字のみを使用するUnicode文字列のエンコーディングであり、ドメイン・ネーム・システムなど、従来のドメイン名しか認識しないソフトウェアで使用することができます。

国際化ドメイン名はRFC 3490で定義されています。 RFC 3490は2つの操作を定義しています。ToASCIIとToUnicodeです。 これら2つの操作は、Stringprepのプロファイルの1つであるNameprepアルゴリズムと、Punycodeアルゴリズムとを使って、ドメイン名文字列の相互変換を行います。

各種フラグを使えば、前述の変換処理の動作を次のように調整することができます。

  • ALLOW_UNASSIGNEDフラグを使用した場合、IDN変換の基礎となるUnicodeバージョンであるUnicode 3.2で未割当になっているコード・ポイントを、変換対象のドメイン名文字列に含めることができる。 このフラグを使用しなかった場合、そのような未割当コード・ポイントの存在はエラーとして処理される。
  • USE_STD3_ASCII_RULESフラグを使用した場合、RFC 1122RFC 1123に基づいてASCII文字列がチェックされる。 それらが要件を満たさない場合はエラーになる。
これらのフラグの論理和をとることができます。

国際化ドメイン名のサポートについては、セキュリティを考慮することが重要です。 たとえば、英語のドメイン名に対して同形異義語化(非ラテン文字の置換による悪意のあるスペル・ミス)が行われる危険性があります。 Unicode Technical Report#36は、IDNサポートのセキュリティ上の問題点と可能な解決策を議論しています。 アプリケーションは、国際化ドメイン名を使用する際に適切なセキュリティ対策を施す責任があります。

導入されたバージョン:
1.6
外部仕様