Unicode 支持
Unicode 标准是一个标准化字符代码,旨在对国际文本进行编码以进行显示和存储。 它使用唯一的 16 位或 32–bit 值来表示每个单独的字符,而不考虑平台,语言或程序。 通过使用 Unicode ,您可以开发将用于各种平台,语言以及国家或地区的软件产品。 Unicode 还允许通过许多不同的系统传输数据。
编译器和运行时提供了两种不同形式的 Unicode 支持。 本部分描述了 Unicode 支持的两种形式以及使用该支持的一些功能和注意事项。 要获取有关 Unicode 的其他信息,请访问 Unicode 主页 ( www.unicode.org)。
第一种类型的 Unicode 支持是 UCS-2 支持。 在编译命令上指定 LOCALETYPE (*LOCALEUCS2) 选项时,编译器和运行时将使用表示 2 字节 Unicode 字符的宽字符 (即 wchar_t 类型的字符) 和宽字符串 (即 wchar_t * 类型的字符串)。 窄 (非宽) 字符和窄字符串表示 EBCDIC 字符,就像未启用 UCS-2 支持时一样。 Unicode 字符表示 CCSID 13488 中的代码点。
第二种类型的 Unicode 支持是 UTF-8 或 UTF-32 支持 (也称为 UTF 支持)。 在编译命令上指定 LOCALETYPE (*LOCALEUTF) 选项时,编译器和运行时使用表示 4 字节 Unicode 字符的宽字符和宽字符串。 每个 4 字节字符表示单个 UTF-32 字符。 窄字符和窄字符串表示 UTF-8 字符。 每个 UTF-8 字符的大小从 1 到 4 字节。 大多数 正常 字符的大小为单个字节,实际上,所有 7 位 ASCII 字符都直接映射到 UTF-8 ,并且大小为 1 字节。 UTF-8 字符表示 CCSID 1208 中的代码点。
#include <stdio.h>
int main() {
printf("Hello World\n");
return 0;
}在使用 UTF 支持编译此程序时,字符串将以 UTF-8 字符 (而不是 EBCDIC 字符) 存储在程序中。 printf() 函数知道这一点,并且能够解析 UTF-8 字符并按预期生成输出。 但是,如果此程序调用了一些不知道如何处理 UTF-8 字符的其他用户提供的函数,那么其他函数可能会产生不正确的结果或行为。