伪 CCSID 中立性
当使用 UTF 支持编译程序时,运行时允许的不仅仅是 UTF-8 字符,它基本上变为 CCSID 中立。 运行时处理当前语言环境中包含的任何 CCSID。 缺省情况下,在使用 UTF 支持编译程序时,装入的语言环境为 UTF-8 (CCSID 1208) 语言环境。 这允许运行时处理 CCSID 1208。 如果调用
setlocale() 函数以将语言环境设置为 EBCDIC 语言环境 (例如, CCSID 37 语言环境) ,那么运行时将处理 CCSID 37。 这与编译器中的 #pragma
convert 支持一起可用于提供国际应用程序支持。 以下是一个示例:#include <stdio.h>
#include <locale.h>
int main() {
/* This string is in CCSID 1208 */
printf("Hello World\n");
/* Change locale to a CCSID 37 locale */
setlocale(LC_ALL, "/QSYS.LIB/EN_US.LOCALE");
#pragma convert(37)
/* This string is in CCSID 37 */
printf("Hello World\n");
return 0;
}