AS400 jdbc 字符转换



使用 JDBC (JT400) 将数据插入到 as400 表中。数据库表代码页为 424。主机代码页 424

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

结果是翻译不正确。

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新