Java не может читать китайские иероглифы из базы данных Db2 - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь прочитать из приложения Java китайские символы из базы данных Db2

Конфигурация базы данных Db2

Конфигурация базы данных DB2 XDSN3T:

DB2 database XDSN3T configuration

с данными DB2 CLP отображаются правильно

enter image description here

также из другого приложения delphi китайские данные верны

enter image description here Для этого я установил:

  • Региональные и языковые параметры, Расширенные программы, не поддерживающие Юникод -> RPC на китайском языке

не поддерживающие Юникод программы:

non unicode programs - переменные среды, DB2CODEPAGE = 1252

DB2CODEPAGE: enter image description here

Только Java не может правильно отображать данные -> ÏÁÏ¡ ¢ ¸¨ÁÏ¡ ¢ ¸½¼þ

enter image description here

Может быть, что-то связано с JDBC ..

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Как уже было сказано, кодировка может быть проблемой;символы в java хранятся с использованием кодировки UTF-16, что само по себе имеет некоторые проблемы с кодировкой китайских (также некоторых эмодзи) символов.

Список символов для UTF-16 можно найти здесь: https://www.fileformat.info/info/charset/UTF-16/list.htm

Проблема с UTF-16 возникает, когда символы не могут быть закодированы с использованием одного 16-битного блока;эти символы кодируются с использованием двух 16-битных единиц, которые называются суррогатной парой.см .: https://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#unicode

Извините, я не могу дать полный ответ, но я надеюсь, что это поможет

0 голосов
/ 08 ноября 2018

Когда вы открываете соединение, вы можете определить кодировку, но не уверены, доступно ли оно для китайского языка.но вот пример:

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

...