AS400 jdbc字符转换

时间:2012-04-23 07:53:46

标签: db2 ibm-midrange

使用jdbc(jt400)将数据插入到as400表中。 db表代码页是424. Host Code Page 424

ebcdic 424代码页不支持许多可能来自客户端的字符。 例如符号(Ascii 26 Hex 1A)

结果是翻译错误。

工具箱中是否有任何内置方法可以删除任何不受支持的字符?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用不同的代码页在ccsid424物理文件上创建逻辑文件。通过添加关键字CCSID(<num>),as / 400可以为各列创建具有不同代码页的逻辑文件。您甚至可以将其设置为unicode字符集,例如UTF-16 CCSID(1200)。当然,你的物理文件仍然只能存储424代码页中的字符,而这些字符将被一些无效的字符字符替换,但翻译可能会更好。

没有办法存储字符,这些字符不在代码页424的直接列中的代码页中(我能想到的唯一方法是用多个字符以某种方式对它们进行编码,但这很可能不是< / em>你想做什么,因为它会带来比“解决”更多的问题。

如果您可以控制该系统,并且可以进行更大的更改,您可以反过来这样做:使用不同的名称创建该物理文件的新unicode版本(我建议使用CCSID( 1200),就像你在/ 400 afaik上接近UTF-16那样接近,根据我的经验,系统的所有部分都不支持UTF-8.IBM确实推荐1200用于unicode)。将所有数据从旧文件传输到新文件,删除旧文件(在此之前,备份它!),然后在新物理上创建逻辑文件,使用旧文件名称物理文件。在该逻辑文件中,将所有带ccsid的列从1200更改为424.这样,现有程序仍可以处理数据。当然,一旦插入不在ccsid 424子集中的数据,逻辑文件中就会出现无效字符;因此,您很可能必须查看使用新逻辑文件的所有程序。