Db2 AS400 jdbc字符转换

Db2 AS400 jdbc字符转换,db2,ibm-midrange,Db2,Ibm Midrange,使用jdbc(jt400)将数据插入as400表。 数据库表代码页是424 ebcdic 424代码页不支持来自客户端的许多字符。 例如,符号→(Ascii 26十六进制1A) 结果是错误的翻译 工具箱中是否有任何内置方法可以删除任何不受支持的字符?您可以尝试使用不同的代码页在ccsid424物理文件上创建逻辑文件。通过添加关键字CCSID(),可以在as/400上为各个列创建具有不同代码页的逻辑文件。您甚至可以将其设置为unicode字符集,例如UTF-16的CCSID(1200)。当然,您的

使用jdbc(jt400)将数据插入as400表。 数据库表代码页是424

ebcdic 424代码页不支持来自客户端的许多字符。 例如,符号
(Ascii 26十六进制1A)

结果是错误的翻译


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

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

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

如果您可以控制该系统,并且可以做一些更大的更改,那么您可以用另一种方法:使用不同的名称创建该物理文件的新unicode版本(我建议使用CCSID(1200),这与as/400 afaik上的UTF-16非常接近,根据我的经验,系统的所有部分都不支持UTF-8。IBM确实建议使用1200(用于unicode)。然后将所有数据从旧文件传输到新文件,删除旧文件(在此之前,备份它!),然后使用旧物理文件的名称在新物理文件上创建一个逻辑文件。在该逻辑文件中,将所有承载ccsid的列从1200更改为424。这样,现有程序仍然可以处理数据。当然,一旦插入不在ccsid 424子集中的数据,现在逻辑文件中将有无效字符;因此,您很可能需要查看所有使用新逻辑文件的程序