JavaTM 2 Platform
Standard Ed. 6

java.net
類別 IDN

java.lang.Object
  繼承者 java.net.IDN

public final class IDN
extends Object

提供在普通 Unicode 表示形式和 ASCII 相容性編碼 (ACE) 表示形式之間進行國際化域名 (IDN) 轉換的方法。國際化域名可以使用整個 Unicode 範圍內的字元,而傳統域名只限於 ASCII 字元。ACE 是只使用 ASCII 字元的 Unicode 字元串編碼方式,能夠與只識別傳統域名的軟體(如 Domain Name System)一起使用。

國際化域名在 RFC 3490 中定義。RFC 3490 定義了兩種操作:ToASCII 和 ToUnicode。這兩種操作使用 Nameprep 演算法(Stringprep 的配置檔案)和 Punycode 演算法來回地轉換域名字元串。

上述轉換處理的行為可以用各種標誌進行調整:

這些標誌在邏輯上可以“或”運算為一個整體。

有關國際化域名支持的安全考慮至關重要。例如,英文域名可能被拼寫成同形異義詞,即故意用非 Latin 字母替代而錯拼的詞。Unicode Technical Report #36 討論了 IDN 支持的安全問題以及可能的解決方案。在使用國際域名時應用程序負責採取足夠的安全措施。

從以下版本開始:
1.6

欄位摘要
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
 

欄位詳細資訊

ALLOW_UNASSIGNED

public static final int ALLOW_UNASSIGNED
允許處理未分派程式碼點的標誌。

另請參見:
常數欄位值

USE_STD3_ASCII_RULES

public static final int USE_STD3_ASCII_RULES
根據 STD-3 ASCII 規則執行檢查的標誌。

另請參見:
常數欄位值
方法詳細資訊

toASCII

public static String toASCII(String input,
                             int flag)
根據 RFC 3490 的 ToASCII 操作中的定義,將字元串從 Unicode 轉換為 ASCII 相容性編碼 (ACE)。

ToASCII 操作可能失敗。如果其任何步驟失敗,則 ToASCII 失敗。如果 ToASCII 操作失敗,則拋出 IllegalArgumentException。在這種情況下,輸入字元串不應在國際化域名中使用。

標籤是域名的單獨部分。根據 RFC 3490 中的定義,初始 ToASCII 操作只在單個標籤上運行。通過假定域名中的標籤始終用點分隔,此方法可以處理標籤和整個域名。以下字元被識別為點:\u002E(句點)、\u3002(表意句點)、\uFF0E(全角句點)和 \uFF61(半角表意句點)。如果點被用作標籤分隔符,則此方法在輸出轉換字元串中將它們全部更改為 \u002E(句點)。

參數:
input - 要處理的字元串
flag - 處理標誌;可以為 0 或任何可能標誌的邏輯或
返回:
已轉換的 String
拋出:
IllegalArgumentException - 如果輸入字元串未遵守 RFC 3490 規範

toASCII

public static String toASCII(String input)
根據 RFC 3490 的 ToASCII 操作中的定義,將字元串從 Unicode 轉換為 ASCII 相容性編碼 (ACE)。

此便捷方法的工作方式類似於調用帶兩個參數的對應方法,如下所示:

toASCII(input, 0);

參數:
input - 要處理的字元串
返回:
已轉換的 String
拋出:
IllegalArgumentException - 如果輸入字元串未遵守 RFC 3490 規範

toUnicode

public static String toUnicode(String input,
                               int flag)
根據 RFC 3490 的 ToUnicode 操作中的定義,將字元串從 ASCII 相容性編碼 (ACE) 轉換為 Unicode。

ToUnicode 永遠不會失敗。出現任何錯誤時,返回的輸入字元串保持不變。

標籤是域名的單獨部分。根據 RFC 3490 中的定義,初始 ToUnicode 操作只在單個標籤上運行。通過假定域名中的標籤始終用點分隔,此方法可以處理標籤和整個域名。以下字元被識別為點:\u002E(句點)、\u3002(表意句點)、\uFF0E(全角句點)和 \uFF61(半角表意句點)。

參數:
input - 要處理的字元串
flag - 處理標誌;可以為 0 或任何可能標誌的邏輯或
返回:
已轉換的 String

toUnicode

public static String toUnicode(String input)
根據 RFC 3490 的 ToUnicode 操作中的定義,將字元串從 ASCII 相容性編碼 ACE) 轉換為 Unicode。

此便捷方法的工作方式類似於調用帶兩個參數的對應方法,如下所示:

toUnicode(input, 0);

參數:
input - 要處理的字元串
返回:
已轉換的 String

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only