Java无法从Db2数据库读取汉字

时间:2018-11-08 16:11:46

标签: java db2 character

我正在尝试从Java应用程序中读取Db2数据库中的汉字

db2数据库配置

DB2数据库XDSN3T配置:

Prices

正确显示带有DB2 CLP的数据

DB2 database XDSN3T configuration

也从另一个delphi应用程序中文数据正确

enter image description here 为此,我设置了:

  • 区域和语言选项,高级非Unicode程序->中文RPC

非unicode程序:

enter image description here -环境变量,DB2CODEPAGE = 1252

db2codepage: non unicode programs

只有Java无法正确显示数据->ÃæÁÏ¡¸¸ÁÏ¡¸¸¼¼þ

enter image description here

也许与JDBC有关。

2 个答案:

答案 0 :(得分:0)

打开连接时,可以定义编码,不确定是否适用于中文。但这是一个例子:

Connection con = DriverManager.getConnection("jdbc:mysql://examplehost:8888/dbname?useUnicode=yes&characterEncoding=UTF-8","user", "pass");

答案 1 :(得分:0)

有人说编码可能是个问题; Java中的字符是使用UTF-16编码存储的,这本身就存在有关中文(还有一些表情符号)字符编码的问题。

您可以在此处找到UTF-16的字符列表:https://www.fileformat.info/info/charset/UTF-16/list.htm

当无法使用单个16位单元编码字符时,会出现UTF-16问题。这些字符使用两个16位单位(称为代理对)进行编码。参见:https://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#unicode

对不起,我无法提供完整的答案,但我希望这会有所帮助