- java.lang.Object
-
- java.net.IDN
-
public final class IDN extends Object
提供在普通Unicode表示和ASCII兼容编码(ACE)表示之间转换国际化域名(IDN)的方法。 国际化域名可以使用整个Unicode范围内的字符,而传统域名仅限于ASCII字符。 ACE是Unicode字符串的编码,仅使用ASCII字符,可以与仅了解传统域名的软件(例如域名系统)一起使用。国际化域名在RFC 3490中定义。 RFC 3490定义了两个操作:ToASCII和ToUnicode。 这两个操作采用Nameprep算法,这是一个Stringprep的配置文件,以及Punycode算法来回转换域名字符串。
上述转换过程的行为可以通过各种标志进行调整:
- 如果使用ALLOW_UNASSIGNED标志,则要转换的域名字符串可以包含在Unicode 3.2中取消分配的代码点,这是IDN转换所基于的Unicode版本。 如果未使用该标志,则将此类未分配的代码点的存在视为错误。
- 如果使用USE_STD3_ASCII_RULES标志,则会针对RFC 1122和RFC 1123检查ASCII字符串。 如果他们不符合要求,则会出错。
在国际化域名支持方面,安全考虑很重要。 例如,英文域名可能是同形词 - 通过替换非拉丁字母而恶意拼写错误。 Unicode Technical Report #36讨论了IDN支持的安全问题以及可能的解决方案。 在使用国际域名时,应用程序负责采取适当的安全措施。
- 从以下版本开始:
- 1.6
-
-
字段汇总
字段 变量和类型 字段 描述 static intALLOW_UNASSIGNED标记以允许处理未分配的代码点static intUSE_STD3_ASCII_RULES标记以打开STD-3 ASCII规则的检查
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static StringtoASCII(String input)将字符串从Unicode转换为ASCII兼容编码(ACE),如RFC 3490的ToASCII操作所 定义 。static StringtoASCII(String input, int flag)从Unicode转换字符串为ASCII兼容性编码(ACE),通过的ToASCII操作中的定义 RFC 3490 。static StringtoUnicode(String input)static StringtoUnicode(String input, int flag)
-
-
-
方法详细信息
-
toASCII
public static String toASCII(String input, int flag)
将字符串从Unicode转换为ASCII兼容编码(ACE),如RFC 3490的ToASCII操作所定义 。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)
将字符串从Unicode转换为ASCII兼容编码(ACE),如RFC 3490的ToASCII操作所定义 。这种方便的方法就好像通过调用双参数对应方式一样,如下所示:
toASCII(input, 0);- 参数
-
input- 要处理的字符串 - 结果
-
翻译
String - 异常
-
IllegalArgumentException- 如果输入字符串不符合RFC 3490规范
-
toUnicode
public static String toUnicode(String input, int flag)
将ASCII兼容编码(ACE)中的字符串转换为Unicode,如RFC 3490的ToUnicode操作所定义 。ToUnicode永远不会失败。 如果有任何错误,输入字符串将不加修改地返回。
标签是域名的单独部分。 RFC 3490中定义的原始ToUnicode操作仅在单个标签上运行。 通过假设域名中的标签始终用点分隔,此方法可以处理标签和整个域名。 以下字符被识别为点:\ u002E(句号),\ u3002(表意句点句号),\ uFF0E(全程句号)和\ uFF61(半字表意文字句点句号)。
- 参数
-
input- 要处理的字符串 -
flag- 进程标志; 可以是0或任何可能的标志的逻辑或 - 结果
-
翻译
String
-
-