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、可能なフラグの任意の論理和のいずれかString
IllegalArgumentException
- 入力文字列がRFC 3490の仕様に準拠していない場合public static String toASCII(String input)
この簡易メソッドは、次のように2つの引数を取るバージョンを呼び出すかのように動作します。
toASCII
(input, 0);
input
- 処理する文字列String
IllegalArgumentException
- 入力文字列がRFC 3490の仕様に準拠していない場合public static String toUnicode(String input, int flag)
ToUnicodeが失敗することは決してありません。エラーが発生した場合は、入力文字列がそのまま返されます。
ラベルとは、ドメイン名の個々の部分のことです。RFC 3490で定義されている元のToUnicode操作は、単一ラベル上でしか動作しません。このメソッドはラベルとドメイン名全体の両方を処理できますが、それは、ドメイン名に含まれるラベルが常にドットで区切られていると仮定することで実現されています。ドットとして認識される文字は、次のとおりです。\u002E (フル・ストップ)、\u3002 (表意フル・ストップ)、\uFF0E (全角フル・ストップ)、および\uFF61 (半角表意フル・ストップ)。
input
- 処理する文字列flag
- 処理フラグ。0、可能なフラグの任意の論理和のいずれかString
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.