跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 国际语言环境指南 Oracle Solaris 11.1 Information Library (简体中文) |
国际化域名 (Internationalized Domain Name, IDN) 允许将非英文本机语言名称用作主机名称和域名。要使用非英文主机名称和域名,请将这些名称转换为 ASCII 兼容编码 (ASCII Compatible Encoding, ACE) 编码名称,然后将名称发送到 RFC5890 中指定的解析器例程。系统管理员还需要在系统管理应用程序不支持 IDN 的系统文件和应用程序中使用 ACE 名称。
有关更多信息,请参见 RFC 5890 应用程序中的域名国际化 (Internationalizing Domain Names in Applications, IDNA)。
图 6-1 Firefox 浏览器中的 IDN 示例
Oracle Solaris 11 提供了两组 IDN 实现,包括库和关联的实用程序:GNU IDN 库和 JPRS (Japan Registry Services co., Ltd.) idnkit-2 库。某些应用程序也可能有其自己的 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) 手册页。
注 - Oracle Solaris 11 所提供的 GNU-libidn 的当前版本仅支持 IDNA2003 标准。
idnkit-2 库是包含 idnkit-2 JPRS 公共许可证的开源 IDN 实现。专用的 idnkit-2 转换实用程序 idnconv(1) 提供了包含各种选项的 IDN 转换。有关用于控制转换详细信息的选项的更多信息,请参见 idnconv(1) 手册页。
利用 libidnkit(3) 中的转换例程,Oracle Solaris 11 还支持通过 iconv(3C) 接口进行 IDN 转换。iconv(1) 实用程序还可用于 ACE 与 UTF-8 之间的转换,如下表所示。
由于 IDNA2008 明确定义了两种操作模式的术语,即 lookup 和 registration,我们也将提供相应的 iconv 代码转换名称别名,即 IDNA2008-LOOKUP(ACE-ALLOW-UNASSIGNED 的别名)和 IDNA2008-REGIST(ACE 的别名)。
表 6-1 iconv IDN 代码转换
|
ACE 和 ACE-ALLOW-UNASSIGNED iconv 代码转换名称(及其别名)具有以下含义:
ACE 或 IDNA2008-REGIST
ACE 是可在 iconv 代码转换中使用的 fromcode 或 tocode 名称,指 RFC 5890 中定义的 ASCII 兼容编码。该转换使用 STD3 ASCII 规则。不允许使用未分配的字符。ACE 通常用于将主机名或域名存储在或传递到计算机上。
ACE-ALLOW-UNASSIGNED 或 IDNA2008-LOOKUP
ACE-ALLOW-UNASSIGNED 执行与 ACE 相同的操作,只是 ACE-ALLOW-UNASSIGNED 允许使用未分配的字符。ACE-ALLOW-UNASSIGNED 通常用于查询。
以下示例显示了以 hostnames.txt 文件作为输入的 ACE 到 UTF-8 的转换。输出转为标准输出。
$ iconv -f ACE -t UTF-8 hostnames.txt
有关 idnkit-2 库和 iconv 代码转换的信息,请参见 libidnkit(3) 和 iconv_en_US.UTF-8(5) 手册页。