локализация результвтов JDBC соединения

Модератор: Absurd

Ответить
bignom
Сообщения: 7
Зарегистрирован: 14 сен 2004, 11:46

15 сен 2004, 14:52

Всем салют!

PrintWriter out = response.getWriter();
Statement statement = dbcon.createStatement();
String query = "SELECT test_string FROM test_table;";
out.println(rs.getString("test_string"));
statement.close();

Вот такой кусочек кода. Соединяется с БД, отрабатывает, выводит. Но выводит не в нужной мне кодировке. Как локализировать результаты выборки?

В качестве back-end'ов JDK1.4.2_5, tomcat5.0.28, Postgresql7.4.5, PgJDBC последние из постгресосвского тарбола. FreeBSD 5.x в качестве операционки.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

15 сен 2004, 15:21

bignom, когда получаешь коннекцию, ты можешь указать кодировку.
См. метод DriverManager.getConnection(String url, Properties info)
одно из пропертей и есть CHARSET. Не уверен правда, что это свойство имеет смысл для всех драйверов, так что смотри документацию к PgJDBC.
Даже самый дурацкий замысел можно воплотить мастерски
bignom
Сообщения: 7
Зарегистрирован: 14 сен 2004, 11:46

15 сен 2004, 22:13

ты почти прав.
совсем правильная строка соединения с Postgresql будет такоа:
jdbc :p ostgresql://host :p ort/database_name?charSet=CHARSET
но это не решило моей проблемы. "На экране" поп прежнему ???? ???? ????
В БД данные хранятся в WIN (Cp1251). А Java использует UNICODE. Может копануть в перекодирование результатов выборки перед юзанием? Если "да", то как? ;) (я совсем новенький)
m_i_s_h_g_u_n
Сообщения: 14
Зарегистрирован: 26 авг 2004, 09:17
Откуда: Самара
Контактная информация:

16 сен 2004, 09:49

Нужно перекодировать строку при помощи конструктора String( byte[] bytes, String charsetName)
Пример:

Код: Выделить всё

   String oldString = "Пример текста";
   String newString = new String( oldString.getBytes("cp1251"), "UTF-8");
Ответить