国际化域名 (Internationalized Domain Name, IDN) 允许将非英文本机语言名称用作主机名称和域名。要使用非英文主机名称和域名,请将这些名称转换为 ASCII 兼容编码 (ASCII Compatible Encoding, ACE) 编码名称,然后将名称发送到 RFC 3490 中指定的解析器例程。系统管理员还需要在系统管理应用程序不支持 IDN 的系统文件和应用程序中使用 ACE 名称。
有关更多信息,请参见 RFC 3490 应用程序中的域名国际化 (Internationalizing Domain Names in Applications, IDNA)。
图 6-1 Firefox 浏览器中的 IDN 示例
注 - 目前,Oracle Solaris 11 中支持的 IDN 标准为 IDNA2003,不支持最新标准 IDNA2008。
Oracle Solaris 11 提供了两组 IDN 实现,包括库和关联的实用程序:GNU IDN 库和 JPNIC idnkit 库。某些应用程序也可能有其自己的 IDN 实现。例如,Firefox 和 Thunderbird 在名为 Necko 的网络协议组件中有其自己的 IDN 服务。
GNU-Libidn 为 GNU 项目,使用 GNU 宽通用公共许可证 (Lesser General Public License, LGPL) 2.1 或更高版本许可。GNU-Libidn 被各种 GNU/Linux 分发版广泛采用。桌面和 GNOME 应用程序(如 pidgin(1))通常利用 GNU-Libidn 实现 IDN 支持。
idn(1) 是国际化域名库的命令行接口。以下示例将采用 UTF-8 编码的主机名转换为 ACE 编码。然后,生成的 URL http://xn-fsqu00a.xn--0zwm56d 可用作 http://例子.测试 的 ACE 编码等效形式。
$ idn --quiet -a 例子.测试 xn-fsqu00a.xn-0zwm56d
GNU-Libidn 可作为 library/libidn 软件包进行安装。有关这些选项的更多信息,请参见 idn(1) 手册页。
idnkit 库是包含类似 BSD 的许可证的开源 IDN 实现。专用的 idnkit 转换实用程序 idnconv(1) 提供了各种用于 IDN 转换的选项。有关用于控制转换详细信息的选项的更多信息,请参见 idnconv(1) 手册页。
利用 libidnkit 中的转换例程,Oracle Solaris 11 还支持通过 iconv(3C) 接口进行 IDN 转换。iconv(1) 实用程序还可用于 ACE 与 UTF-8 之间的转换,如下表所示。
表 6-1 iconv IDN 代码转换
|
ACE 是可在 iconv 代码转换中使用的 fromcode 或 tocode 名称,指 RFC 3490 中定义的 ASCII 兼容编码。该转换使用 STD3 ASCII 规则。不允许使用未分配的字符。ACE 通常用于将主机名或域名存储在或传递到计算机上。
ACE-ALLOW-UNASSIGNED 与 ACE 执行相同的操作,只是 ACE-ALLOW-UNASSIGNED 允许使用未分配的字符。ACE-ALLOW-UNASSIGNED 通常用于查询。
例如,运行以下命令可将文本文件中的输入从 ACE 转换为 UTF-8 字符集。
$ iconv -f ACE -t UTF-8 hostnames.txt
JPNIC idnkit 库可以作为 library/idnkit 软件包安装。有关 idnkit 库和 iconv 代码转换的信息,请参见 libidnkit(3LIB) 和 iconv_en_US.UTF-8(5) 手册页。