缺省文件 CCSID
当使用 fopen() 函数来打开文件时,该文件的缺省 CCSID 根据是否使用 UTF 支持而有所不同。 如果未使用 UTF 支持 (即,如果在编译命令上指定了 LOCALETYPE (*CLD) , LOCALETYPE (*LOCALE) 或 LOCALETYPE (*LOCALEUCS2)) ,那么文件 CCSID 缺省为当前作业 CCSID。 通常,由于正确设置了作业 CCSID ,并且将当前语言环境设置为与作业 CCSID 匹配,因此此操作正常。
使用 UTF 支持时,由于系统限制,无法将作业 CCSID 设置为 UTF-8 。 当指定 LOCALETYPE (*LOCALEUTF) 时,文件 CCSID 缺省为当前语言环境的 CCSID。 如果正在使用缺省语言环境,那么 CCSID 缺省为 UTF-8 (CCSID 1208)。 如果不需要此缺省值,那么可以在 fopen() 调用的第二个参数中指定 ccsid 或 o_ccsid 关键字。 但是,数据库文件例外,因为 DB2® for IBM® i 不完全支持 UTF-8。 当指定 SYSIFCOPT (*NOIFSIO) 并且当前语言环境的 CCSID 为 1208 时,文件的 CCSID 缺省为 CCSID 65535 (无转换) 而不是 CCSID 1208。 这允许 CCSID 1208 与数据库文件一起使用。 有关文件 CCSID 的更多信息,请参阅 fopen ()-Open Files。