Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Кодировки / 6 сообщений из 6, страница 1 из 1
14.02.2005, 15:03
    #32914429
zhas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировки
Привет! У меня проблема - создал сервлет, получающий значение из HTML формы(русские буквы), и этот же сервлет должен выдавать записи из базы данных Oracle, причем тоже в кириллице.

response.setContentType("text/html; charset=windows-1251");
PrintWriter out=response.getWriter();

Так вот, если я оставляю значение чарсет windows-1251 - значение полученное из формы выводится на html-страницу с заменой всех русских букв знаком вопроса, но данные из таблицы выводятся нормально. А если оставляю

response.setContentType("text/html");
PrintWriter out=response.getWriter();

То получается наоборот - строка полученная из формы выводится правильно, а строки из таблицы - с заменой русских букв на "?".

Посоветуйте как получить обе строки с "правильными" символами.
...
Рейтинг: 0 / 0
14.02.2005, 16:09
    #32914633
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировки
Весь исходник давай.
...
Рейтинг: 0 / 0
14.02.2005, 16:20
    #32914675
Vinny Puhh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировки
Я делаю вот так :

response.setContentType("text/html;charset=Windows-1251");
request.setCharacterEncoding("Cp1251");

и вроде все работает....

з.ы. Схема та же - форма -> БД(Informix) и обратно....
...
Рейтинг: 0 / 0
14.02.2005, 16:24
    #32914688
Vinny Puhh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировки
точнее вот так:

PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=Windows-1251");
request.setCharacterEncoding("Cp1251");

и эти строчки должны быть ПЕРВЫМИ в методе сервлета.... (doGET, doPOST....)
...
Рейтинг: 0 / 0
15.02.2005, 09:12
    #32915552
zhas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировки
Всё! Всем большое спасибо! =)
...
Рейтинг: 0 / 0
16.02.2005, 09:54
    #32917711
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировки
Насколько я вижу проблема в том что неверно воспринимается кодировка request'а. Т.е. ваш ответ(response) броузеру верен, а вот когда сам броузер посылает вам запрос (и как обычно не указывает кодировку параметров) - ваш сервлет считает что параметры переданы в ISO-8859-1

Можете это проверить выполнив это

System.err.println(new String(request.getParameter("param_name").getBytes("ISO-8859-1"),"Cp1251")));

в jsp такая проблема решается с помощью <fmt:requestEncoding/> - можете посмотреть спецификацию на JSP - там будет подробное описание проблемы
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Кодировки / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]