public final class IDN extends Object
国際化ドメイン名は RFC 3490 で定義されています。RFC 3490 は 2 つの操作を定義しています。ToASCII と ToUnicode です。これら 2 つの操作は、Stringprep のプロファイルの 1 つである Nameprep アルゴリズムと、Punycode アルゴリズムとを使って、ドメイン名文字列の相互変換を行います。
各種フラグを使えば、前述の変換処理の動作を次のように調整することができます。
国際化ドメイン名のサポートについては、セキュリティーを考慮することが重要です。たとえば、英語のドメイン名に対して同形異義語化(非ラテン文字の置換による悪意のあるスペルミス) が行われる危険性があります。Unicode Technical Report #36 は、IDN サポートのセキュリティー上の問題点と可能な解決策を議論しています。アプリケーションは、国際化ドメイン名を使用する際に適切なセキュリティー対策を施す責任があります。
修飾子と型 | フィールドと説明 |
---|---|
static int |
ALLOW_UNASSIGNED
未割当コードポイントの処理を許可するフラグ。
|
static int |
USE_STD3_ASCII_RULES
STD-3 ASCII 規則に基づくチェックをオンにするフラグ。
|
修飾子と型 | メソッドと説明 |
---|---|
static String |
toASCII(String input)
RFC 3490 の ToASCII 操作の定義に従って、Unicode から ASCII 互換エンコーディング (ACE) への文字列変換を行います。
|
static String |
toASCII(String input, int flag)
RFC 3490 の ToASCII 操作の定義に従って、Unicode から ASCII 互換エンコーディング (ACE) への文字列変換を行います。
|
static String |
toUnicode(String input)
RFC 3490 の ToUnicode 操作の定義に従って、ASCII 互換エンコーディング (ACE) から Unicode への文字列変換を行います。
|
static String |
toUnicode(String input, int flag)
RFC 3490 の ToUnicode 操作の定義に従って、ASCII 互換エンコーディング (ACE) から Unicode への文字列変換を行います。
|
public static final int ALLOW_UNASSIGNED
public static final int USE_STD3_ASCII_RULES
public static String toASCII(String input, int flag)
ToASCII 操作は失敗する可能性があります。ToASCII が失敗するのは、その任意のステップが失敗した場合です。ToASCII 操作が失敗すると、IllegalArgumentException がスローされます。この場合、その入力文字列を国際化ドメイン名に含めるべきではありません。
ラベルとは、ドメイン名の個々の部分のことです。RFC 3490 で定義されている元の ToASCII 操作は、単一ラベル上でしか動作しません。このメソッドはラベルとドメイン名全体の両方を処理できますが、それは、ドメイン名に含まれるラベルが常にドットで区切られていると仮定することで実現されています。ドットとして認識される文字は、次のとおりです。\u002E (フルストップ)、\u3002 (表意フルストップ)、\uFF0E (全角フルストップ)、および \uFF61 (半角表意フルストップ)。ドットがラベル区切り文字として使用されている場合、このメソッドはさらに、変換後の出力文字列内でそれらのすべてを \u002E (フルストップ) に変更します。
input
- 処理する文字列flag
- 処理フラグ。0、可能なフラグの任意の論理和のいずれかIllegalArgumentException
- 入力文字列が RFC 3490 の仕様に準拠していない場合public static String toASCII(String input)
この簡易メソッドは、次のように 2 つの引数を取るバージョンを呼び出すかのように動作します。
toASCII
(input, 0);
input
- 処理する文字列IllegalArgumentException
- 入力文字列が RFC 3490 の仕様に準拠していない場合public static String toUnicode(String input, int flag)
ToUnicode が失敗することは決してありません。エラーが発生した場合は、入力文字列がそのまま返されます。
ラベルとは、ドメイン名の個々の部分のことです。RFC 3490 で定義されている元の ToUnicode 操作は、単一ラベル上でしか動作しません。このメソッドはラベルとドメイン名全体の両方を処理できますが、それは、ドメイン名に含まれるラベルが常にドットで区切られていると仮定することで実現されています。ドットとして認識される文字は、次のとおりです。\u002E (フルストップ)、\u3002 (表意フルストップ)、\uFF0E (全角フルストップ)、および \uFF61 (半角表意フルストップ)。
input
- 処理する文字列flag
- 処理フラグ。0、可能なフラグの任意の論理和のいずれか バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.