java JDBC URL DB2编码字符
在JDBCforDB2中有没有办法将URL编码设置为UTF-8
jdbc:db2://../characterEncoding=UTF-8;
我知道MySQL可以工作,但DB2不行
我的问题是,我试图发送一个字符(ASCII表中的E28093),但在DB2中,该字符被转换为箭头字符,这是不正确的
有没有办法发送正确的字符,或者问题出在DB2配置上
DB2是9.4版本,在z/OS中运行
解决
我重新创建了我的表并添加了
CCSID Unicode
进入我的桌子空间。 我用正确的子类型创建了列。 文档链接: https://www.ibm.com/support/knowledgecenter/en/SSEPEK_11.0.0/char/src/tpc/db2z_createunicodetable.html
# 1 楼答案
通常,执行代码页转换的是客户端jdbc驱动程序,在确定问题时,了解客户端jdbc驱动程序的类型和版本非常重要。对于type-4currentjdbc驱动程序版本,您不需要在连接字符串上指定此类详细信息
代码页转换详细信息取决于客户端jdbc驱动程序版本和类型、客户端应用程序代码页(区域设置)和目标表/列CCSID
无法对特定转换进行评论,因为您没有提供任何详细信息,即,除了jdbc驱动程序版本和类型外,还需要显示源位置字符的十六进制代码、目标位置的CCSID以及目标位置的十六进制代码
对于某些版本的type-2驱动程序,可以指定属性sendcharInputF8=yes/no,以影响转换发生的位置(客户端默认值或服务器端)。有关详细信息,请参阅Db2文档
如果您使用的是旧的jdbc驱动程序(如4.14.xxx),请注意可能存在与字符转换相关的错误,因此您应确保使用Passport Advantage或Fix Central(如4.23.xx或更高版本)的最新jdbc驱动程序
源字符不是7bit ASCII,而是Unicode,在UTF-8编码中,其三字节十六进制为0xE2 0x80 0x93。在目标数据库中,在SYSIBM中进行验证。SYSCOLUMNS列长度、coltype、ccsid中的值。如果列存储UTF-8值,则在sysibm中显示ccsid列。syscolumns可以是1208
您可以选择HEX(colname)来查看存储在目标列中的十六进制值