Страница 1 из 1

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

Добавлено: 15 сен 2004, 14:52
bignom
Всем салют!

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 в качестве операционки.

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

Добавлено: 15 сен 2004, 22:13
bignom
ты почти прав.
совсем правильная строка соединения с Postgresql будет такоа:
jdbc :p ostgresql://host :p ort/database_name?charSet=CHARSET
но это не решило моей проблемы. "На экране" поп прежнему ???? ???? ????
В БД данные хранятся в WIN (Cp1251). А Java использует UNICODE. Может копануть в перекодирование результатов выборки перед юзанием? Если "да", то как? ;) (я совсем новенький)

Добавлено: 16 сен 2004, 09:49
m_i_s_h_g_u_n
Нужно перекодировать строку при помощи конструктора String( byte[] bytes, String charsetName)
Пример:

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

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