国际语言环境指南

国际化域名 (IDN) 支持

利用国际化域名 (IDN) 功能,可以使用非英语的本机语言名称作为主机名和域名。要使用非英语的主机名和域名,根据 RFC 3490 的规定,请在将名称发送至解析器路由之前将这些名称转换为使用 ASCII 兼容编码 (ACE) 编码的名称。在系统管理应用程序不支持 IDN 的系统文件和应用程序中,系统管理员仍然需要使用 ACE 名称。

请参见 RFC 3490“应用程序中的国际化域名 (IDNA)”。

libidnkit(3EXT) 中的国际化域名 API 提供 UTF-8 或应用程序语言环境的字符集和 ACE 的方便转换。如果使用了 idn_decodename2(3EXT),您还可以指定任意代码集名称作为输入参数的代码集。

图 2–1 IDN 至 ACE 转换

图中显示了非英语名称至 ASCII 兼容编码字符串的转换

图 2–2 ACE 至 IDN 转换

图中显示了 ASCII 兼容编码字符串至非英语名称的转换

下表显示您可以使用的双向 iconv 代码转换。

表 2–16 iconv 代码转换

源代码 

目标代码 

ACE 

ACE-ALLOW-UNASSIGNED 

UTF-8 

UTF-8 

UTF-8 

UTF-8 

ACE 

ACE-ALLOW-UNASSIGNED 

ACE 和 ACE-ALLOW-UNASSIGNED iconv 代码转换名称具有下列意义:

下例显示将输入的 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) 手册页。