文档

Java™ 教程-Java Tutorials 中文版
国际化域名
Trail: Internationalization
Lesson: Internationalization of Network Resources

国际化域名

过去,Internet 域名仅包含 ASCII 符号。随着互联网的普及并被全世界采用,有必要支持域名的国际化,特别是支持包含 Unicode 字符的域名。

应用程序中的 Internationalizing Domain Names(IDNA)机制被用作将 Unicode 字符转换为标准 ASCII 域名的标准,从而保持域名系统的稳定性。该系统执行查找服务以将用户友好名称转换为网络地址。

国际化域名的示例:

如果你按照这些链接进行操作,你将看到地址栏中表示的 Unicode 域名被 ASCII 字符串替换。

要在应用程序中实现类似的功能,java.net.IDN 类提供了在 ASCII 和非 ASCII 格式之间转换域名的方法。

方法 目的
toASCII(String)
toASCII(String, flag)
在将 IDN 发送到域名解析系统或将 IDN 写入需要 ASCII 字符的文件(例如 DNS 主文件)之前使用。如果输入字符串不符合 RFC 3490,则这些方法抛出 IllegalArgumentException
toUnicode(String)
toUnicode(String, flag)
在向用户显示名称时使用,例如从 DNS 区域获取的名称。此方法将字符串从 ASCII 兼容编码(ACE)转换为 Unicode 代码点。这种方法永远不会失败如果出现错误,输入字符串保持不变,并且不加修改地返回。

可选的 flag 参数指定转换过程的行为。ALLOW_UNASSIGNED 标志允许包含 Unicode 3.2 中未分配的代码点。USE_STD3_ASCII_RULES 标志确保遵守 STD-3 ASCII 规则。你可以单独使用这些标志,也可以逻辑“或”在一起使用。如果不需要任何标志,请使用该方法的单参数版本。


Previous page: Internationalization of Network Resources
Next page: Service Providers for Internationalization