Unicode 和语言字符的编码
COBOL for Linux® 为 Unicode 提供了基本的运行时支持,可以处理数以万计的字符,涵盖了世界上所有常用的字符和符号。
字符集 是已定义的字符集,但未与编码表示相关联。 编码字符集 (在本文档中也称为 代码页) 是一组明确的规则,这些规则将该集的字符与其编码表示法相关联。 每个代码页都有一个名称,类似于一个设置符号以表示字符集的表; 每个符号都与唯一的位模式或 代码点相关联。 每个代码页还具有 编码字符集标识 (CCSID) ,它是从 1 到 65,536 的值。
Unicode 有多种编码方案,称为 Unicode 变换格式 (UTF),例如 UTF-8, UTF-16和 UTF-32。 COBOL Linux 使用 UTF-16 (CCSID 1200) 小双位格式 ,作为国家字面量和数据项的表示,这些数据项有 USAGE
NATIONAL。
UTF-8 表示 ASCII 不变量字符 a-z , A-Z , 0-9 以及某些特殊字符,例如 ' @ ,。 +-=/* () 与它们以 ASCII 表示的方式相同。 UTF-16 将这些字符表示为 NX'nn00', 其中 X'nn' 是 ASCII 字符的表示。
例如,字符串 'ABC' 在 UTF-16 中表示为 NX'410042004300'。 在 UTF-8中, 'ABC' 表示为 X'414243'。
一个或多个 编码单元 用于表示编码字符集中的字符。 对于 UTF-16,编码单元采用 2 字节的存储器。 当字符转换为国家数据表示时,任何 EBCDIC , ASCII 或 EUC 代码页中定义的任何字符都以一个 UTF-16 编码单元表示。
跨平台注意事项: Enterprise COBOL for z/OS® 和 COBOL for AIX® 支持国家数据中大尾数法格式的 UTF-16 。 默认情况下, COBOL for Linux 支持国家数据中的小endian 格式 UTF-16。 如果您要将以 UTF-16BE 表示形式编码的 Unicode 数据从其他平台移植到 Linux COBOL ,则必须将这些数据转换为小端 UTF-16 格式,以便将数据作为国家数据进行处理,或者使用 UTF16 编译器选项来更改编译器处理 UTF-16 字节序的方式。 通过 COBOL for Linux ,您可以使用 NATIONAL-OF 固有函数执行此类转换。