Как сделать запрос к базе данных UTF-8 с помощью JDBC - PullRequest
1 голос
/ 01 июля 2011

Моя база данных DB2 использует кодировку UTF-8. В исходной таблице есть один столбец с текстом UTF-8, как эти строки ниже

Греческий: πορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα
Чешский: Mohu jíst sklo, neublíží mi
Сербский: могуа могу да једем стакло

Мой код Java делает это (.. вырезал ненужные части ..)

ResultSet rs = stmt.executeQuery("SELECT SAMPLE_TEXT FROM UNICODE_TEST");
File file = new File("Unicode.txt");
BufferedWriter outFile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF8"));
while (rs.next()) {
    outFile.write(rs.getString("SAMPLE_TEXT"));
    outFile.write( "\n" );
}

Результат в моем файле совсем не похож на результат в исходной таблице. Я получаю это вместо

Греческий: ÏœÏ € οÏÏŽ νΠ± Ï † Î¬Ï ‰ ÏƒÏ € Î ± σμÎνΠ± γυ Î ± Î »Î¹Î¬ Ï ‡ Ï ‰ Ïίς νΠ± Ï € Î¬Î¸Ï ‰ Ï „Î ˙I € Î¿Ï «вольт-
Чешский: Моху юст скло, neublÞà mi
Сербский: ЈР° могу дР° једем ÑÑ‚Ð ° кР»Ð¾

Что я пропустил?

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Ваш код Java в порядке. Вы уверены, что содержание вашего файла неверно? Например, то, что вы видите, может показаться неправильным, если ваш терминал неверен. Можете ли вы увидеть другие текстовые файлы на этом компьютере в кодировке UTF-8? (Если вы не уверены, прочитайте его в гекса, получите дамп с od и т. Д.). Если вы уверены, что это не ваша проблема, то я бы указал на некоторые настройки кодировки кодировки в соединении JDBC (нет опыта работы с DB2).

0 голосов
/ 01 июля 2011

Я не знаю, какую базу данных вы используете, но если это MySQL, попробуйте добавить characterEncoding=UTF-8 в строку подключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...