Most visited

Recently visited

Added in API level 9

IDN

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算法来来回转换域名字符串。

上述转换过程的行为可以通过各种标志进行调整:

These flags can be logically OR'ed together.

在国际化域名支持方面,安全考虑很重要。 例如,英文域名可能是同质体 - 通过替换非拉丁字母恶意拼写。 Unicode Technical Report #36讨论了IDN支持的安全问题以及可能的解决方案。 使用国际域名时,应用程序负责采取适当的安全措施。

Summary

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

Constants

ALLOW_UNASSIGNED

Added in API level 9
int ALLOW_UNASSIGNED

标记以允许处理未分配的代码点

常数值:1(0x00000001)

USE_STD3_ASCII_RULES

Added in API level 9
int USE_STD3_ASCII_RULES

标记打开STD-3 ASCII规则的检查

常量值:2(0x00000002)

Public methods

toASCII

Added in API level 9
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

toASCII

Added in API level 9
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

toUnicode

Added in API level 9
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

toUnicode

Added in API level 9
String toUnicode (String input)

将字符串从ASCII Compatible Encoding(ACE)转换为Unicode,如 RFC 3490的ToUnicode操作所 定义

这种便捷方法的作用就好像通过调用双参数的对应方式如下:

toUnicode(input, 0);

Parameters
input String: the string to be processed
Returns
String the translated String

Hooray!