使用 iconv_open 子例程
本节将演示如何在不同情况下使用 iconv_open 子例程。
以下示例列举了在不同情况下如何使用 iconv_open 子例程:
- 如果发送方和接收方使用相同的代码集,并且协议允许 8 位数据,那么可以不加转换的发送数据。 如果协议仅允许 7 位数据,那么进行如下操作:
Sender: cd = iconv_open("uucode", nl_langinfo(CODESET)); Receiver: cd = iconv_open(nl_langinfo(CODESET), "uucode"); - 如果发送方和接收方使用不同的代码集,并且协议允许使用 8 位数据,且接收方的代码集未知,那么执行如下操作:
Sender: cd = iconv_open("fold8", nl_langinfo(CODESET)); Receiver: cd = iconv_open(nl_langinfo(CODESET),"fold8" );如果协议仅允许 7 位数据,那么进行如下操作:Sender: cd = iconv_open("fold7", nl_langinfo(CODESET)); Receiver: cd = iconv_open(nl_langinfo(CODESET), "fold7" );
iconv_open 子例程使用 位置路径 环境变量来搜索其名称为以下格式的转换器:
iconv/FromCodeSet_ToCodeSetFromCodeSet 字符串代表发送方的代码集,而 ToCodeSet 字符串代表接收方的代码集。 下划线字符将两个字符串隔开。
注: 所有 设置标识 和 设置标识 程序都忽略 位置路径 环境变量。
因为 iconv 转换器是可装入对象模块,在运行于 64 位环境时,需要不同的对象。 在 64 位环境中,iconv_open 例程使用 LOCPATH 环境变量搜索名称为以下格式的转换器:
iconv/FromCodeSet_ToCodeSet__64.iconv 库自动选择是装入标准转换器对象还是装入 64 位转换器对象。 如果 iconv_open 子例程未找到转换器,它将使用 from,to 对来搜索定义表驱动转换的文件。 该文件包含由 genxlt 命令创建的转换表。
iconvTable 转换器使用 LOCPATH 环境变量来搜索名称为以下格式的文件:
iconvTable/FromCodeSet_ToCodeSet
如果找到了转换器,转换器就执行装入操作并且初始化。 转换器描述符 iconv_t 以其初始状态返回。