【问题标题】:com.ibm.db2.jcc.b.SqlException: [ibm][db2][jcc][10275][10041] Unsupported ccsid, encoding, or locale: "Cp037"com.ibm.db2.jcc.b.SqlException:[ibm][db2][jcc][10275][10041] 不支持的 ccsid、编码或语言环境:“Cp037”
【发布时间】:2020-04-27 02:46:16
【问题描述】:

我是 WAS 服务器的新手。我正在使用 Java 1.8、Spring(4.3.9.RELEASE)、Hibernate(4.2.0)、DB2 和 WAS 8.5.5(安装了 java 1.8)进行 POC。服务器成功启动,但在执行 createQuery() 语句时出现异常。

 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.b.p.a(p.java:435)
    ... 132 more
2020-01-09 17:20:13 WARN  SqlExceptionHelper:143 - SQL Error: -99999, SQLState: 22021
2020-01-09 17:20:13 ERROR SqlExceptionHelper:144 - [ibm][db2][jcc][10275][10041] Unsupported ccsid, encoding, or locale: "Cp037".

当我将它部署到 Tomcat 中时它工作正常。请帮我解决这个问题, 让我知道是否需要任何信息。谢谢。

【问题讨论】:

  • 您是否尝试过此链接中的建议? developer.ibm.com/answers/questions/439579/…
  • 试过了,但没有成功。 :(
  • 你检查过Tomcat环境和WAS的LANG(locale)设置吗?如果没有,请尝试设置相同并重新启动机器以查看它是否拾取 LANG。这似乎是某种环境问题。
  • @hidehy 我没有在两台服务器中设置任何语言环境。
  • @sivabalaji 我会尝试明确设置 LANG=C 或 LANG=en_US.utf-8 以防止配置不一致。

标签: spring hibernate db2 websphere tomcat8


【解决方案1】:

我遇到了这个问题,我通过以下操作解决了问题。

  1. 打开 websphere 应用服务器 (WAS) 管理控制台。

  2. 转到 JDBC、JDBC 提供程序、使用 IBM JCC 驱动程序的 DB2、类路径; 确保你有这个条目:${DB2_JCC_DRIVER_PATH}/db2jcc4.jar

  3. 转到环境,Websphere 变量,DB2_JCC_DRIVER_PATH 应该指向最新的 db2jcc4.jar 的文件夹/路径,我的日期是 6/13/2019

【讨论】:

    【解决方案2】:

    这似乎是 JDK 8 的一种已知行为。以下是参考资料之一:

    JDK 8 中的 UTF-8 编码/解码问题
    https://www.ibm.com/support/pages/utf-8-encodingdecoding-problem-jdk-8

    原因:


    从 JDK 8 开始,NIO UTF-8 解码器(Java API)的输入数据应该是纯 UTF-8。直到 JDK 8,这条规则还没有被严格执行,并且解码器也能够解码格式错误的 UTF-8 字节序列。 JDK 1.8 中的解码器遇到非 UTF-8 数据时会抛出异常,程序无法继续执行。


    解决方案:(不适用于 Oracle JDK 8)


    JCC 中引入了一个新的全局属性 db2.jcc.alternateUTF8Encoding。该属性可以有值 1 和 0 ,默认值为 0 。如果此属性在 IBM JDK 1.8 (db2.jcc.alternateUTF8Encoding=1) 下针对 UTF8 编码数据设置为 1,则 JCC 使用 UTF8J 进行解码。 这将有助于在解码期间避免 MalformedInputException。这是一个全局属性,需要在属性文件中进行配置。此属性无法使用 DataSource 或 Connection 设置,并且仅适用于 IBM JDK。


    建议查看文章。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 2013-01-10
      • 2020-04-05
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多