public final class IDN
extends Object
java.lang.Object | |
↳ | java.net.IDN |
提供在普通Unicode表示和ASCII兼容编码(ACE)表示之间转换国际化域名(IDN)的方法。 国际化域名可以使用整个Unicode范围内的字符,而传统域名仅限于ASCII字符。 ACE是Unicode字符串的一种编码,它只使用ASCII字符,并且可以与仅了解传统域名的软件(如域名系统)一起使用。
国际化域名在RFC 3490中定义。 RFC 3490定义了两种操作:ToASCII和ToUnicode。 这两个操作使用Nameprep算法,其是Stringprep的简档,以及Punycode算法来来回转换域名字符串。
上述转换过程的行为可以通过各种标志进行调整:
在国际化域名支持方面,安全考虑很重要。 例如,英文域名可能是同质体 - 通过替换非拉丁字母恶意拼写。 Unicode Technical Report #36讨论了IDN支持的安全问题以及可能的解决方案。 使用国际域名时,应用程序负责采取适当的安全措施。
Constants |
|
---|---|
int |
ALLOW_UNASSIGNED 标记以允许处理未分配的代码点 |
int |
USE_STD3_ASCII_RULES 标记打开STD-3 ASCII规则的检查 |
Public methods |
|
---|---|
static String |
toASCII(String input, int flag) 将字符串从Unicode转换为ASCII Compatible Encoding(ACE),如ToASCII操作 RFC 3490所定义。 |
static String |
toASCII(String input) 将字符串从Unicode转换为ASCII兼容编码(ACE),如ToASCII操作 RFC 3490所定义。 |
static String |
toUnicode(String input, int flag) 将字符串从ASCII Compatible Encoding(ACE)转换为Unicode,如 RFC 3490的ToUnicode操作所 定义 。 |
static String |
toUnicode(String input) 将字符串从ASCII Compatible Encoding(ACE)转换为Unicode,如 RFC 3490的ToUnicode操作所 定义 。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int USE_STD3_ASCII_RULES
标记打开STD-3 ASCII规则的检查
常量值:2(0x00000002)
String toASCII (String input, int flag)
将字符串从Unicode转换为ASCII兼容编码(ACE),如ToASCII操作 RFC 3490所定义。
ToASCII操作可能会失败。 如果任何步骤失败,ToASCII将失败。 如果ToASCII操作失败,则会抛出IllegalArgumentException。 在这种情况下,输入字符串不应该用于国际化域名。
标签是域名的个别部分。 RFC 3490中定义的原始ToASCII操作仅在单个标签上运行。 通过假设域名中的标签始终由点分隔,此方法可以处理标签和整个域名。 以下字符被识别为点:\ u002E(句号),\ u3002(表意句号),\ uFF0E(全角句号),而\ uFF61(半角表意句号)。 如果点用作标签分隔符,则此方法也会将其全部更改为输出转换字符串中的\ u002E(句号)。
Parameters | |
---|---|
input |
String : the string to be processed |
flag |
int : process flag; can be 0 or any logical OR of possible flags |
Returns | |
---|---|
String |
the translated String |
Throws | |
---|---|
IllegalArgumentException |
if the input string doesn't conform to RFC 3490 specification |
String toASCII (String input)
从Unicode转换字符串为ASCII兼容性编码(ACE),通过的ToASCII操作中的定义 RFC 3490 。
这种便捷方法的作用就好像通过调用双参数的对应方式如下:
toASCII
(input, 0);
Parameters | |
---|---|
input |
String : the string to be processed |
Returns | |
---|---|
String |
the translated String |
Throws | |
---|---|
IllegalArgumentException |
if the input string doesn't conform to RFC 3490 specification |
String toUnicode (String input, int flag)
将字符串从ASCII Compatible Encoding(ACE)转换为Unicode,如 RFC 3490的ToUnicode操作所 定义 。
ToUnicode永远不会失败。 如有任何错误,输入字符串将不加修改地返回。
标签是域名的个别部分。 RFC 3490中定义的原始ToUnicode操作只能在单个标签上运行。 通过假设域名中的标签始终由点分隔,此方法可以处理标签和整个域名。 以下字符被识别为点:\ u002E(句号),\ u3002(表意句号),\ uFF0E(全角句号),而\ uFF61(半角表意句号)。
Parameters | |
---|---|
input |
String : the string to be processed |
flag |
int : process flag; can be 0 or any logical OR of possible flags |
Returns | |
---|---|
String |
the translated String |