|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.net.IDN
public final class IDN
通常の Unicode 表現と ASCII 互換エンコーディング (ACE) 表現との間で国際化ドメイン名 (IDN) の変換を行うメソッドを提供します。国際化ドメイン名が Unicode の全範囲の文字を使用できるのに対し、従来のドメイン名は ASCII 文字に制限されています。ACE は ASCII 文字のみを使用する Unicode 文字列のエンコーディングであり、ドメインネームシステムなど、従来のドメイン名しか認識しないソフトウェアで使用することができます。
国際化ドメイン名は 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 への文字列変換を行います。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
---|
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、可能なフラグの任意の論理和のいずれか
public static String toUnicode(String input)
この簡易メソッドは、次のように 2 つの引数を取るバージョンを呼び出すかのように動作します。
toASCII
(input, 0);
input
- 処理する文字列
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。