利用国际化域名 (IDN) 功能,可以使用非英语的本机语言名称作为主机名和域名。要使用非英语的主机名和域名,根据 RFC 3490 的规定,请在将名称发送至解析器路由之前将这些名称转换为使用 ASCII 兼容编码 (ACE) 编码的名称。在系统管理应用程序不支持 IDN 的系统文件和应用程序中,系统管理员仍然需要使用 ACE 名称。
请参见 RFC 3490“应用程序中的国际化域名 (IDNA)”。
libidnkit(3EXT) 中的国际化域名 API 提供 UTF-8 或应用程序语言环境的字符集和 ACE 的方便转换。如果使用了 idn_decodename2(3EXT),您还可以指定任意代码集名称作为输入参数的代码集。
源代码 |
目标代码 |
---|---|
ACE ACE-ALLOW-UNASSIGNED |
UTF-8 UTF-8 |
UTF-8 UTF-8 |
ACE ACE-ALLOW-UNASSIGNED |
ACE 和 ACE-ALLOW-UNASSIGNED iconv 代码转换名称具有下列意义:
ACE。
ACE 是可在 iconv 代码转换中使用的 fromcode 或 tocode 名称,指 RFC 3490 中定义的 ASCII 兼容编码。该转换使用 STD3 ASCII 规则。不允许使用未分配字符。ACE 通常用于将主机名或域名存储在或传递到计算机上。
ACE-ALLOW-UNASSIGNED。
ACE-ALLOW-UNASSIGNED 与 ACE 执行相同操作,只是 ACE-ALLOW-UNASSIGNED 允许使用未分配的字符。ACE-ALLOW-UNASSIGNED 通常用于查询。
下例显示将输入的 hostnames.txt 文件从 ACE 转换为至 UTF-8。输出将变为标准输出。
system% iconv -f ACE -t UTF-8 hostnames.txt
专用 IDN 转换实用程序 idnconv(1) 提供具有不同选项的 IDN 转换。这些选项控制转换细节。
有关 IDN、转换例程和 iconv 代码转换的信息,请参见 libidnkit(3LIB)、idn_decodename(3EXT)、idn_decodename2(3EXT)、idn_encodename(3EXT) 和 iconv_en_US.UTF-8(5) 手册页。