iconv_open ()-分配代码转换描述符

标准

标准/扩展 C 或 C++ 依赖关系
XPG4
XPG4.2
单一 UNIX 规范 V 3
两个  

格式

#include <iconv.h>

iconv_t iconv_open(const char *tocode, const char *fromcode);

一般描述

执行将字符从 fromcode 参数所指向的数组中指定的编码字符集转换为 tocode 参数所指向的数组中指定的编码字符集所需的所有初始化。

转换描述符使两个编码字符集相关。

对于与状态相关的编码,转换描述符将处于与编码字符集相关的初始移位状态,可立即与 iconv () 配合使用。 转换描述符保持有效,直到使用 iconv_close () 关闭为止。

fromcodetocode的设置及其允许的组合依赖于实现。

注: 已修改 iconv () 系列函数,以利用 Unicode 服务提供的字符转换服务。 iconv_open () , iconv () 和 iconv_close () 的函数接口将保持不变,只是新增了四个新的 errno 值和下面段落中描述的两个新的环境变量。

iconv () 函数系列与 Unicode 服务之间的外部性存在差异。 但是,除 z/OS XL C/C++ Compiler and Runtime Migration Guide for the Application Programmer中指出的情况外,这些差异将由 iconv () 系列函数管理。 只要未定义 _ICONV_TECHNIQUE ,标题为 "提供的代码集转换器" 的 z/OS XL C/C++ Programming Guide主题 中列出的所有转换都将像在集成 Unicode 服务之前一样继续工作。 如果应用程序未定义 _ICONV_TECHNIQUE 环境变量,那么 iconv_open () 将使用缺省值 LMREC。

Unicode 服务支持在 z/OS XL C/C++ Programming Guide中未列出的数千个附加字符集之间进行转换。 可以在 z/OS Unicode 服务用户指南和参考中找到 Unicode 服务支持的转换的完整列表。 要对这些表中列出的任何字符集使用 iconv_open () 设置转换,用户需要使用表示 fromcodetocode的 CCSID 的字符串。 例如,要使用转换技术 R 设置从 CCSID 00256 到 CCSID 00870 的转换,用户将 _ICONV_TECHNIQUE 环境变量设置为 R 并调用 iconv_open () ,如下所示:

cd = iconv_open(“00870”, “00256”);

并像前发行版一样继续使用 iconv () 和 iconv_close ()。

iconv () 使用以下环境变量。
_ICONV_UCS2
告知 iconv_open (Y , X) 在从 X 到 Y 的 "直接" 转换与从 "间接" X 到 UCS-2 到 Y 的 "直接" 转换之间有选择时要设置的转换方法类型。
_ICONV_UCS2_PREFIX
告诉 iconv_open() z/OS® 数据集名称前缀,以便在找不到 UCS-2 表时使用。
_ICONV_MODE
选择 iconv_open () , iconv () 和 iconv_close () 的行为方式。
_ICONV_TECHNIQUE
这是使用 Unicode 转换服务时使用的技术值。 有关 Unicode 转换服务技术值的更多信息,请参阅 主题 -创建 z/OS Unicode 服务用户指南和参考的 Unicode 环境。

有关使用 iconv_close () 的说明,请参阅 示例

双向语言支持的特殊注意事项: 执行激活要由 iconv 使用的双向布局变换所需的所有初始化。 要启用双向布局变换,必须满足以下三个条件:
  1. _BIDION 环境变量必须设置为 TRUE。
  2. iconv_open () 时间的当前语言环境必须是阿拉伯语或希伯来语语言环境 (例如, Ar_AA 或 Iw_IL)。
  3. 转换代码集必须是阿拉伯语或希伯来语代码集。
在以下三种情况下,转换代码集有所不同:
  1. 情况 fromCodeSet 是 UCS-2 , toCodeSet 是单字节代码集。 在这种情况下, toCodeSet 必须是阿拉伯语或希伯来语代码集。
  2. 案例 fromCodeSet 是单字节代码集, toCodeSet 是 UCS-2。 在这种情况下, fromCodeSet 必须是阿拉伯语或希伯来语代码集。
  3. fromCodeSet 和 toCodeSet 都是单字节代码集。 在这种情况下, toCodeSet 必须是阿拉伯语或希伯来语代码集。

iconv_open () 检查环境变量 _BIDIATTR 是否存在,以获取双向布局变换属性。 如果 _BIDIATTR 未定义,未设置或 _BIDIATTR 环境变量中存在某些错误值,那么它将使用缺省值。 缺省值是依赖于所使用的阿拉伯语或希伯来语代码集的代码集。 对于阿拉伯语 420 代码集,缺省值将为: 方向 RTL ,文本可视类型,成形形状,数字本地和交换。 对于希伯来语 424 代码集,缺省值将为: 方向 RTL ,文本可视类型和交换。 对于阿拉伯语代码集的其余部分,缺省值将为: 方向 RTL ,隐式文本类型,塑形名义,数字本地和交换。

iconv_open () 使用以下环境变量。
(_BIDION)
指示 iconv_open () 是否激活已转换数据的双向处理。 如果要开启双向布局变换,那么可以为 _BIDION 指定值 TRUE ,如果要关闭 BiDi 布局变换,那么可以指定值 FALSE。 如果未在环境中定义 variable_BIDION ,那么还可以关闭双向布局变换。
(_BIDIATTR)
保存将由 iconv 稍后使用的双向布局变换属性, _BIDIATTR 将在 iconv_open () 时间内只读。 _BIDIATTR 环境变量采用以冒号分隔的输入/输出对形式,在字符串开头有一个 @ ,用于标识属性列表的开头,然后后跟 <attribute_name1>=<input1>:<output1>, <attribute_name2>=<input2>:<output2> ..... (eg. export _BIDIATTR="@ls typeoftext=visual:implicit,orientation=ltr:ltr, numerals=nominal:national"). 形式的属性

返回值

如果成功, iconv_open () 将返回转换描述符。

如果不成功, iconv_open () 将返回 (iconv_t) -1 并将 errno 设置为下列其中一个值:
错误代码
描述
EINVAL
不支持在指定的编码字符集之间进行转换。
ECUNNOENV

Unicode 转换服务发出了 CUN_RS_NO_UNI_ENV 错误。

请参阅 z/OS Unicode Services User 's Guide and Reference 以了解用户操作。

ECUNNOCONV

Unicode 转换服务发出了 CUN_RS_NO_CONVERSION 错误。

请参阅 z/OS Unicode Services User 's Guide and Reference 以了解用户操作。

已计算

Unicode 转换服务发出了CUN_RS_TABLE_NOT_比对错误。

请参阅 z/OS Unicode Services User 's Guide and Reference 以了解用户操作。

ECUNERR

函数 iconv () 在使用 Unicode 转换服务时迂到意外错误。

请参阅消息 EDC6258 以获取更多信息。

相关信息