Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка в выборке из MsSQL 2000 через JDBC, Проблема с кириллицей 
V
    Опции темы
zuzukrukov
Дата 3.9.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 31.8.2009

Репутация: нет
Всего: нет



Есть сервлет, который осуществляет подключение к базе MsSQL 2000 и делает оттуда выборку, а затем отправляет полученные данные клиенту. Но в браузере выводится текст с неправильной кодировкой (латинские символы с черточками, точечками и прочими).

Что проверял:
1. Кодировку response.
2. Кодировку всей статики
3. Пытался конвертировать полученный String в другую кодировку (в браузере появлялись знаки вопроса):
Код

String win = rs.getString("fio");
String utf = new String(win.getBytes(),"Cp1251");


Что НЕ пробовал (на выбранные кодировки не обращайте внимания):
Код

String fio = new String(rs.getString("fio").getBytes("Cp1251"),"Cp1251");

Попробую завтра с утра.

Используемый код:

Код

public ArrayList SelectDoctors(Connection con){
        ArrayList array = new ArrayList();
        try{
            String SQL = "select a.fio from sotrudniki a";
            
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(SQL);
            
            while (rs.next()){
                Doctor newDoctor = new Doctor();
                String fio = rs.getString("fio");

                newDoctor.setDoctorData(fio);
                array.add(newDoctor);
            }
            rs.close();
            stmt.close();

        }catch (Exception e){
            e.printStackTrace();
        }
        return array;
    }



При написании кода создавалась тестовая база MsSQL 2000 и он работал корректно. При подключении к рабочей базе - появляется описанная проблема. Какая кодировка стоит на рабочей базе не могу сказать точно, но вроде бы как Cp1251.

Это сообщение отредактировал(а) zuzukrukov - 3.9.2009, 19:42
PM MAIL   Вверх
Hidrag
Дата 4.9.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 3
Всего: 25



1. Узнать в какой кодировке хранятся данные в БД
2. В какой кодировке выводишь в браузер.

Иногда советуют вместо родного драйвера от МС использовать jTDS драйвер...


--------------------
user posted image
PM WWW ICQ   Вверх
zuzukrukov
Дата 4.9.2009, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 31.8.2009

Репутация: нет
Всего: нет



Огромное спасибо за помощь. Проблема решена.

Почему такое было:
Сама база хранит записи в кодировке Cp1251, а данные туда запихивались в latin1 (так и не понял зачем. Скорее всего были дефолтные установки).
При выборке данных с помощью метода getString() строка записывалась в кодировке Cp1251 (так как их хранит база).

Почему не сработало конвертирование, которое я указал в предудыщуем посте:
Код

String win = rs.getString("fio");
String utf = new String(win.getBytes(),"Cp1251");

Потому что если в методе getBytes() не указывать кодировку, то никакого преобразования не происходит.

И, наконец, рабочий код:
String fio = new String(rs.getString("fio").getBytes("latin1"),"Cp1251");

В переменную fio записаны данные в правильной кодировке (в данном случае в Cp1251).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0784 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.