论坛里一直有朋友困惑于总是出现系统内一些程序乱码等问题,这些都是由于代码页转换问题.
我这里有篇文章就是详细介绍这个的,作者是IBM的陈兵. <iseries技术指南>;这本书的附录里面也有该部分,有书的朋友可以拿书看看.
希望对大家有用
===============================================
值得注意的是,在这里我们使用了“简体中文”这四个字,是为了对应在iSeries上、语言编码为2989的Simplified Chinese,也就是为了对应那些与简体中文相关的编码标准。它决不意味着我们系统仅仅支持简体字。
我们知道,当一个作业被启动的时候,系统会为它确定各项属性的取值,其中包括:
 作业的语言代码
 作业的CCSID
 作业的缺省CCSID
通常,前两项属性都会去参照与该作业相关的用户简要表(User Profile),而用户简要表中的上述参数又往往会进一步去参照系统值。对于作业的缺省CCSID,系统则会依据下面的条件判断加以确定:
 当作业的CCSID不为65535时,作业的缺省CCSID即等于作业的CCSID;
 当作业的CCSID为65535时,作业的缺省CCSID会依据作业的语言代码来确定;
由上一节我们可以知道,当我们选择DBCS大小写英文(编号为2984)作为系统的主语言时,系统值中的语言代码会被设定为美国英语ENU。用户登录所产生的作业,其各项属性会以美国英语为基础,特别是会将37作为作业的缺省CCSID。而当我们选择简体中文(编号为2989)作为系统的主语言时,系统值中的语言代码会被设定为简体中文CHS。用户登录所产生的作业,其各项属性会以简体中文为基础,特别是会将935或1388作为作业的缺省CCSID。
了解作业的缺省CCSID很重要,因为当作业要创建任何具有CCSID属性的对象的时候,系统会参照当前作业的缺省CCSID,为该对象赋予相应的CCSID取值。
目前在大陆的iSeries用户,由于其用户简要表中的设置不同,其登录所产生的作业,针对上述三项属性的取值也会有所不同。稍加留意便可发现,以下五种情况最为常见:
用户实例 用户简要表中的语言代码 用户简要表中的CCSID 作业的语言
代码 作业的CCSID 作业的缺省CCSID
USER01 ENU 37 ENU 37 37
USER02 CHS 935 CHS 935 935
USER03 CHS 1388 CHS 1388 1388
USER11 ENU 65535 ENU 65535 37
USER12 CHS 65535 CHS 65535 935
考察以用户USER01,或用户USER11登录系统所产生的作业,它们都将以37作为作业的缺省CCSID。由于37是一种单字节的CCSID,因此以37作为缺省CCSID的作业是无法完全正确地处理双字节字符的。比如,用户在利用如下的DDS源文件编译物理文件的时候,
0 ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
A* CUSTOMER INFORMATION TABLE
A
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 影响 系统 理解 CCSID 字节 文件 作业 中文 用户 作为 |
注册
个人空间
