![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
zuzukrukov |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 31.8.2009 Репутация: нет Всего: нет |
Есть сервлет, который осуществляет подключение к базе MsSQL 2000 и делает оттуда выборку, а затем отправляет полученные данные клиенту. Но в браузере выводится текст с неправильной кодировкой (латинские символы с черточками, точечками и прочими).
Что проверял: 1. Кодировку response. 2. Кодировку всей статики 3. Пытался конвертировать полученный String в другую кодировку (в браузере появлялись знаки вопроса):
Что НЕ пробовал (на выбранные кодировки не обращайте внимания):
Попробую завтра с утра. Используемый код:
При написании кода создавалась тестовая база MsSQL 2000 и он работал корректно. При подключении к рабочей базе - появляется описанная проблема. Какая кодировка стоит на рабочей базе не могу сказать точно, но вроде бы как Cp1251. Это сообщение отредактировал(а) zuzukrukov - 3.9.2009, 19:42 |
||||||
|
|||||||
Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 3 Всего: 25 |
1. Узнать в какой кодировке хранятся данные в БД
2. В какой кодировке выводишь в браузер. Иногда советуют вместо родного драйвера от МС использовать jTDS драйвер... -------------------- ![]() |
|||
|
||||
zuzukrukov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 31.8.2009 Репутация: нет Всего: нет |
Огромное спасибо за помощь. Проблема решена.
Почему такое было: Сама база хранит записи в кодировке Cp1251, а данные туда запихивались в latin1 (так и не понял зачем. Скорее всего были дефолтные установки). При выборке данных с помощью метода getString() строка записывалась в кодировке Cp1251 (так как их хранит база). Почему не сработало конвертирование, которое я указал в предудыщуем посте:
Потому что если в методе getBytes() не указывать кодировку, то никакого преобразования не происходит. И, наконец, рабочий код: String fio = new String(rs.getString("fio").getBytes("latin1"),"Cp1251"); В переменную fio записаны данные в правильной кодировке (в данном случае в Cp1251). |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |