DB2JCC 驱动程序 jar 调用不同的 jdk 进行字符编码转换

问题描述

我在 websphere 控制台上部署了一个与 db2 数据库连接的应用程序。安装的 jdk 是 IBM JDK。从在线屏幕运行特定案例时,会弹出一个错误

UnsupportedEncodingException . ERRCODE = -4220

在检查日志时,以下错误似乎是根本原因。

Caused by: java.io.UnsupportedEncodingException: Cp037
at sun.io.Converters.getConverterClass(Converters.java:319)
at sun.io.Converters.newConverter(Converters.java:373)
at sun.io.BytetocharConverter.getConverter(BytetocharConverter.java:98)
at com.ibm.db2.jcc.am.r.<init>(r.java:10)

分析: 看起来像 IBM db2 驱动程序 - db2jcc4.jar 调用底层 JDK 的特定字符编码/解码 jar(charsets.jar 我相信)来传递缓冲区流,然后缓冲区流将被它消耗jar 并解码为 String 格式。

但是正如上面的日志所暗示的,被调用的库是oracle jdk。 BytetocharConverter 类位于 oracle jdk 库的 rt.jar 中。 我们正在使用 IBM jdk,它嵌入在 IBM 的 websphere 服务器安装中。另外OS上的JAVA_HOME路径只为IBM JDK设置,在websphere console中,环境变量下JAVA_HOME设置为websphere server中IBM JDK的根路径。

我是否需要在 websphere 控制台中设置任何特定参数,以告诉编码应该如何发生。? 不知道如何解决这个问题。任何帮助表示赞赏。

编辑

db2jcc 版本

IBM Data Server Driver for JDBC and sqlJ 4.18.60

java -version

java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 8.0.6.26 - pxa6480sr6fp26-20210216_01(SR6 FP26))
IBM J9 VM (build 2.9,JRE 1.8.0 Linux amd64-64-Bit Compressed References 20210216_465732 (JIT enabled,AOT enabled)
OpenJ9   - e5f4f96
omr      - 999051a
IBM      - 358762e)
JCL - 20210108_01 based on Oracle jdk8u281-b09

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)