伪 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;
}