如何从iseries上的DB2转换SQuirrel中的CCSID 65535

Chr*_*mus 1 db2 jdbc squirrel-sql ibm-midrange

我是SQuirrel SQL的新手.我需要一些帮助才能将CCSID 65535转换为ASCII,UNICODE(或任何人类可读的)

我按照以下指南使用JDBC驱动程序.


根据IBM的网站:

我的程序必须处理哪些字符转换问题?IBM i数据库使用EBCDIC来存储文本.Java使用Unicode.JDBC驱动程序处理字符集之间的所有转换,因此您的程序不必担心它.

但我认为它们指的是CCSID 37而不是65535(Hex).


我从DB2 DB获得了以下信息

做DSPFD给了我:

编码字符集标识符......:CCSID 65535

做DSPFFD给了我:

TXT     CHAR            3       3        41        Both     Text      
Field text  . . . . . . . . . . . . . . . :  Text   Coded Character
Set Identifier  . . . . . :  65535
Run Code Online (Sandbox Code Playgroud)

但是TXT字段的SQuirrel查询结果是:

5c c1 c4 c4 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 c1 40 7e 40 c2 40 4e 40 c3 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40

哪个应该被翻译成:

*ADD                      A = B + C
Run Code Online (Sandbox Code Playgroud)

jam*_*man 13

来自JDBC FAQ:

为什么Toolbox JDBC将EBCDIC字符返回给我的Java程序?

通常,Toolbox JDBC驱动程序会自动将EBCDIC字符转换为Unicode字符串.如果它似乎是返回未翻译的EBCDIC字符,那么很可能IBM i数据库中的字段标记为CCSID 65535.Toolbox JDBC驱动程序将此CCSID识别为不应转换的字段.要避免此行为,请使用有效的CCSID标记要转换的IBM i上的字段.或者,您可以将"translate binary"连接属性设置为"true",它指示JDBC驱动程序转换所有字段,包括标记为CCSID 65535的字段.最简单的方法是添加

";translate binary=true"
Run Code Online (Sandbox Code Playgroud)

到连接数据库时使用的URL的末尾.