PDA

Просмотр полной версии : локализация результвтов JDBC соединения



bignom
15.09.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
15.09.2004, 15:21
bignom, когда получаешь коннекцию, ты можешь указать кодировку.
См. метод DriverManager.getConnection(String url, Properties info)
одно из пропертей и есть CHARSET. Не уверен правда, что это свойство имеет смысл для всех драйверов, так что смотри документацию к PgJDBC.

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

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


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