powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Старо как мир - jsp + руссификация
17 сообщений из 17, страница 1 из 1
Старо как мир - jsp + руссификация
    #33637185
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В силу возможностей приходится переделывать проект написанный на jsp. Ранее ответы клиенту и запросы клиенту проходили на ура, но в UTF-8, сейчас пробую win1251 получаю обломы. Вернее на сервер вместо русских букв уходят ??? Все это разумеется устанавливается в фильтре.
Строка, устанавливающая кодировку следущая:
request.setCharacterEncoding(ENCODING);
сейчас ENCODING = "Cp1251" раньше ENCODING = "UTF-8"
в jsp страницах
сейчас
<%@ page contentType="text/html; charset=cp1251" pageEncoding="windows-1251" %>
было
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>

фильтр срабатывает и срабатывает первым.
Где порылась собака ?

P.S. Tomcat 5.5.16, JDK 1.4.2_10
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33637214
Правильно так:
Код: plaintext
1.
<%@ page contentType="text/html; charset=windows-1251" pageEncoding="Cp1251" %>

А чем не устраивает UTF-8?
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33637224
Добавка:
pageEncoding - это кодировка, в которой написан исходный код страницы. Смотрю, раньше у вас все было в UTF-8. Если вы исходники не перекодировали, то правильный вариант:
Код: plaintext
1.
<%@ page contentType="text/html; charset=windows-1251" pageEncoding="UTF-8" %>
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33637268
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про pageEncoding понятно. Исходники перекодировал, сейчас уже написал везде
<%@ page contentType="text/html;charset=Windows-1251" pageEncoding="Cp1251" %>
на самом деле комбинаций я перебрал больше. Сейчас стоит как написано здесь.
кстати играет роль W indows-1251 и w indows-1251 ?
Но это по моему неважно, т.к. все это ответ сервера.
request устанавливает запрос от клеинта.
Где ошибка?
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33637410
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю может Гуру в java это и знают, но я (далеко не Гуру) удивился: после изменения метода GET у формы на метод POST все заработало!
Кто-нибудь может это прокомментировать?
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33637669
v_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень хочется, чтобы прокомментировали уважаемые специалисты. У меня похожая проблема , но в моем случае использование метода GET принципиально (запрос на сервер идет через AJAX).
По сути, после получения данных из формы нужно сделать их URL декодирование.
Как это сделать?
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33638552
В протоколе HTTP для запросов не указывается кодировка, в которой передаются параметры. Отсюда все проблемы, и именно поэтому появился метод javax.servlet.ServletRequest#setCharacterEncoding. Браузер передает ( во всяком случае, должен ) параметры в той кодировке, в которой получена страница с формой.

В подтверждение сказанного предлагаю простой эксперимерт. Зайдите на http://ya.ru , наберите "привет" и нажмите Enter.
Броузер пошел по следующей ссылке:

http://www.yandex.ru/yandsearch?rpt=rad&text= %EF%F0%E8%E2%E5%F2

Теперь снова зайдите на http://ya.ru, выберите куодировку UTF-8 ( при этом страницу чуток покоробит ), наберите "привет" и нажмите Enter:

http://www.yandex.ru/yandsearch?rpt=rad&text= %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82


Лично я указываю на всех страницах следующее:
Код: plaintext
1.
2.
3.
4.
5.
 1 ) <%@ page contentType="text/html; charset=windows-1251" %>
либо response.setContentType("text/html; charset=windows-1251");

 2 ) <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
это необходимо на случай, если пользователь сохранит страницу
Пока проблем с кодировкой не возникало.


Michael PonomarevНе знаю может Гуру в java это и знают, но я (далеко не Гуру) удивился: после изменения метода GET у формы на метод POST все заработало!
Кто-нибудь может это прокомментировать?
Может, элементарное кеширование? Какой браузер?

v_777Очень хочется, чтобы прокомментировали уважаемые специалисты. У меня похожая проблема , но в моем случае использование метода GET принципиально (запрос на сервер идет через AJAX).
По сути, после получения данных из формы нужно сделать их URL декодирование.
Как это сделать?
Не покажете код, которым вы формируете запрос?
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33638611
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Ponomarev<%@ page contentType="text/html; charset=cp1251" pageEncoding="windows-1251" %>

Браузер не знает кодировки cp1251. Он знает windows-1251. Поэтому вам бы лучше написать

Код: plaintext
<%@ page contentType="text/html; charset=windows-1251" pageEncoding="windows-1251" %>

http://java.sun.com/products/jsp/syntax/1.2/syntaxref1210.html
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33638613
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ненавижу регистрациюПравильно так:

Код: plaintext
1.
<%@ page contentType="text/html; charset=windows-1251" pageEncoding="Cp1251" %>


Так неправильно. Правильно, как я выше написал.
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33638841
М.Голованов Ненавижу регистрациюПравильно так:

Код: plaintext
1.
<%@ page contentType="text/html; charset=windows-1251" pageEncoding="Cp1251" %>


Так неправильно. Правильно, как я выше написал.
Спасибо за Ваш комментарий, не знал о переменах java в отношении к кодировкам. Согласен, что Ваш вариант ближе к спецификациям...по крайней мере, начиная с 1.4.2. За 1.4.x (x<2) сказать не могу, но в 1.3.x (и ниже) точно поддерживается только Cp1251. Также в документации к 1.5 я нигде не увидел, что Cp1251 deprecated и т.п. Сказано, что каноническое имя windows-1251, а Cp1251 - alias.

Выходит, что мой вариант более универсальный - будет работать везде:)
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33639005
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ненавижу регистрациюСпасибо за Ваш комментарий, не знал о переменах java в отношении к кодировкам.

А никаких перемен особых и нет. JVM оперирует своими наименованиями кодировок, которые перечислены в документации на JVM. Баузеры оперируют наименованиями кодировок по регистру IANA. windows-1251 понимается и JVM, и браузерами, так как входит и в регистр IANA, и как каноническое наименование - в кодировки JVM. А вот Cp1251 входит только в кодировки JVM (как алиас) и браузерам неведом.
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33639011
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСогласен, что Ваш вариант ближе к спецификациям...по крайней мере, начиная с 1.4.2. За 1.4.x (x<2) сказать не могу, но в 1.3.x (и ниже) точно поддерживается только Cp1251.

При чём тут спецификации и вообще Java. Поддержка UTF-8 в Java есть с самого начала. Cp1251 - давно или тоже с начала, не знаю. Так что есть возможность выбирать, что использовать в программе на Java. Правильно выбирать UTF-8, и неправильно windows-1251. Для вывода HTML страницы в IE, если бы он не поддерживал UTF-8, надо было бы перекодировать текст в Windows-1251, но он поддерживает, поэтому не надо. Нет ни малейшего смысла использовать Windows-1251, и я то и дело ругаю за него находящихся по соседству плохих программистов.
Как назвать кодировку "Cp1251" - так ли или "windows-1251" (названия набора символов в Java) - не повлияет на HTML. Поэтому не имеет отношения к директиве page contentType=... в которой надо использовать обозначения кодировок, понятные для IE.

авторВ силу возможностей приходится переделывать проект написанный на jsp. Ранее ответы клиенту и запросы клиенту проходили на ура, но в UTF-8, сейчас пробую win1251 получаю обломы.

Было сделано правильно. Какой тайный смысл переделывать неправильно - загадка. Впрочем, можете не раскрывать вашу тайну.
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33639107
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan M

авторКакой тайный смысл переделывать неправильно - загадка.

а размер получаемой страницы уже не является важным параметром?
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33639384
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri Partisan M
а размер получаемой страницы уже не является важным параметром?

является, только не в случае с текстом... Если много информации на странице - сделайте несколько страниц, а заморачиваться с кодировками для этих целей - ИМХО фетишизм... Кстати, что Вы будете делать, если попросят оработать с китайскими иероглифами? :)
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33640364
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Partisan M , объясните пожалуйста, а чем использование UTF-8 лучше? Я нехочу разжигать религиозную войну, тем более из-за кодировок, но все-же не понимаю столь категоричных высказываний. Если БД воспринимает 1251 и не надо писать alter session, если программа будет использоваться только внутри компании, если, насколько я понял, utf-8 была поставлена только из-за невозможности передать параметры (метод POST небыл опробован). Чем одна кодировка лучше другой? Разумеется мы не говорим о случае использования по назначению(китайский например) и, почему программист, использующий 1 кодировку - хороший, а другую плохой? А вопрос мой был лишь почему при изменении метода GET на метод POST все заработало?
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33640878
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вопрос мой был лишь почему при изменении метода GET на метод POST все заработало?

На сколько я помню, томкат любил так пошутить. Разные типы запросов(GET/POST), по разному декодировал. Проблема решалась настройками томката.
...
Рейтинг: 0 / 0
Старо как мир - jsp + руссификация
    #33640941
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Старо как мир - jsp + руссификация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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