当前位置: 首页 > 知识库问答 >
问题:

不受支持的CharsetException:带有DB2 JDBC驱动程序的Cp1027

闾丘冠玉
2023-03-14

我正在创建一个简单的数据库表,其中包含一个类型为Timestamp的列,IBMDB2上来自JDBC客户端的大型机,如下所示-

CREATE TABLE scma.timetest(
            T_TYPE VARCHAR(8),
            T_DATE TIMESTAMP
            );

如果我从scma中执行<code>select*,可以插入或不插入任何记录。时间测试我最终得到以下异常-

java.nio.charset.UnsupportedCharsetException: Cp1027

如果我没有时间戳类型列,一切正常。我试过用-Dfile.encoding=UTF-8启动JDBC客户端,但没有成功。我也从Java程序中尝试过同样的方法,它会导致同样的错误。

这不是这里提到的同一个问题,我没有得到ClassNotFoundException。任何指针都可能出错。如果有帮助的话,这里有一个完整的例外-

Exception in thread "main" java.nio.charset.UnsupportedCharsetException: Cp1027
    at java.nio.charset.Charset.forName(Charset.java:531)
    at com.ibm.db2.jcc.am.t.<init>(t.java:13)
    at com.ibm.db2.jcc.am.s.a(s.java:12)
    at com.ibm.db2.jcc.am.o.a(o.java:444)
    at com.ibm.db2.jcc.t4.cc.a(cc.java:2412)
    at com.ibm.db2.jcc.t4.cb.a(cb.java:3513)
    at com.ibm.db2.jcc.t4.cb.a(cb.java:2006)
    at com.ibm.db2.jcc.t4.cb.a(cb.java:1931)
    at com.ibm.db2.jcc.t4.cb.m(cb.java:765)
    at com.ibm.db2.jcc.t4.cb.i(cb.java:253)
    at com.ibm.db2.jcc.t4.cb.c(cb.java:55)
    at com.ibm.db2.jcc.t4.q.c(q.java:44)
    at com.ibm.db2.jcc.t4.rb.j(rb.java:147)
    at com.ibm.db2.jcc.am.mn.kb(mn.java:2107)
    at com.ibm.db2.jcc.am.mn.a(mn.java:3099)
    at com.ibm.db2.jcc.am.mn.a(mn.java:686)
    at com.ibm.db2.jcc.am.mn.executeQuery(mn.java:670)

共有1个答案

柳奇思
2023-03-14

从评论中移动到这里:

遗留DB2 for z/OS通常使用EBCDIC(也称为CP1027)编码来处理字符数据。我还认为DB2将时间戳值作为字符串发送给客户机,尽管它们在内部的存储方式不同。我怀疑您正在使用的Java运行时不支持CP1027,因此它不知道如何将EBCDIC数据转换为它在客户端上需要的任何数据。我无法解释为什么< code>VARCHAR值通过OK。

有关 DB2 编码的更多详细信息,请查看手册。

您可以强制 DB2 使用不同的编码创建表,Java 可能会支持这种编码:

CREATE TABLE scma.timetest(...) CCSID UNICODE

另一种选择是使用支持EBCDIC (CP1027)编码的不同Java运行时。带有一些DB2客户机包的IBM JDK是一个不错的选择。

您(嗯,不是您,而是大型机系统程序员)也可以为数据库(子系统)配置默认编码方案。

 类似资料:
  • Cassandra行级别锁定支持,同时由并发用户访问同一行 我们正处于shooping cart应用程序的设计阶段,考虑将Cassandra作为库存数据库。现在的要求是,如果多个用户同时访问库存数据库中的同一产品行。例如:-产品表:productID ProductQuantity 1000 1如果第一个用户选择产品“1000”并在购物车中将产品数量添加为“1”,则访问同一产品的其他用户应该无法选

  • 我使用xampp 32位PHP7.1。1. 我在我的Windows上安装了mongodb 3.4.2(Windows 8 Pro 64位) 我还安装了驱动程序(php_mongodb.dll) 我从这里得到:https://pecl.php.net/package/mongodb/1.2.5/windows (7.1线程安全(TS)x86) 但是,当我的系统执行时,仍然存在错误: 哎呀,好像出了什

  • 我使用Spring Boot和PostgreSQL和Flyway已经有一段时间了,到现在为止几乎没有遇到过任何无法解决的问题。我正在建立一个新的项目,像往常一样,我试图将自定义配置保持在最低限度,期望Spring Boot将知道如何配置大多数东西--而且通常情况下是这样的。但是现在我在尝试创建“FlywayInitializer”bean时遇到了一个错误。它是由以下RuntimeException

  • 我假设Selenium打开的chrome浏览会话将与google chrome本地安装相同。但是当我尝试在这个网站上搜索时,即使只是用selenium打开它并手动控制搜索过程,我会得到一个错误信息,当我使用常规chrome与我自己的个人资料或在incognito窗口中搜索结果返回良好。每当我搜索这个问题,我发现结果指出鼠标移动或点击模式提供它。但情况并非如此,因为我在打开浏览器后尝试手动控制。ht

  • 当我想要在neo4j服务器上持久化数据时出现此错误。你觉得问题可能出在哪? 我的pom.xml如下所示 我的controller类如下所示: 我的公司节点如下 我的人节点如下 我可以成功启动spring boot应用程序和tomcat servlet服务于端口8080。 但当我在Postman上执行此操作时,我收到标题上的错误:org.neo4j.driver.exceptions.cliente

  • 问题内容: 我正在寻找用于支持存储过程的nodejs的mySQL驱动程序。我一直在使用的http://nodejsdb.org/db- mysql/ 给出了错误 PROCEDURE无法在给定的上下文中返回结果集 问题答案: 它在nodejs-mysql-native中工作 存储过程: node.js脚本: 输出: