' @'在两个不同的ibm服务器(AS400)中显示不同

时间:2017-12-13 08:03:53

标签: ibm-midrange

我正在尝试在两个不同的iseries服务器中生成xml。两台服务器都具有相同的CCSID。但是当xml被框起来时,' @'角色正在转换为其他角色。在另一台服务器中,它正确显示。两个服务器都处于相同的PTF级别,甚至两个服务器的java版本都相同。 服务器之间可能有什么区别?我该如何检查差异? 为什么' @'正在转换为其他角色,只在一个服务器中?

1 个答案:

答案 0 :(得分:3)

这听起来像是一个CCSID问题。

TL;博士
CCSID存储在IBM i上的多个位置,根据数据的来源,您可以查看多个位置。

系统值 - QCCSID是系统默认的CCSID,但它只在某些情况下发挥作用,所以是的它们应该是相同的,但它不是全部。请注意,许多已经存在很长时间的系统都将QCCSID设置为65535。

作业CCSID - 每个作业都有自己的CCSID,默认为系统CCSID,但可以通过用户配置文件或SBMJOB命令进行修改。但这不是CCSID在工作中的全部故事。如果作业CCSID是65535,则基于LANGID设置作业默认CCSID。对于我的系统LANGID是ENU,作业默认CCSID是37。

数据库 - 每个数据库表都指定了一个CCSID。对于在CRTPF命令中指定的DDS,对于SQL,使用作业默认CCSID。此外,每个字符数据列都可以指定它自己的CCSID。

设备文件 - 与数据库文件一样,设备文件可以在文件级别和字段级别指定自己的CCSID。

问题是@字符不是不变字符集的一部分,因此它可以在不同的CCSID中以不同的方式显示,特别是如果你在混合中有CCSID 65535。 65535表示没有转换。您需要确保CCSID全面相同,如果65535在那里,那么它们彼此都是一致的。

关于CCSID 65535的最后说明。这是系统上只有一种语言的日子。那时,没有与字符集的非转换相关的问题,因为使用该系统的每个人都使用相同的语言。现在系统以各种方式连接,并且数据与PC和网络共享,CCSID成为一个大问题,因为即使系统中的每个人说同一种语言,你仍然可以遇到多个CCSID' s由于PC,IFS,XML,Unicode等,最好将系统CCSID设置为65535以外的其他内容。

相关问题