|
|
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
В силу возможностей приходится переделывать проект написанный на 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 11:55 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Правильно так: Код: plaintext 1. А чем не устраивает UTF-8? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 12:01 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Добавка: pageEncoding - это кодировка, в которой написан исходный код страницы. Смотрю, раньше у вас все было в UTF-8. Если вы исходники не перекодировали, то правильный вариант: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 12:03 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
про pageEncoding понятно. Исходники перекодировал, сейчас уже написал везде <%@ page contentType="text/html;charset=Windows-1251" pageEncoding="Cp1251" %> на самом деле комбинаций я перебрал больше. Сейчас стоит как написано здесь. кстати играет роль W indows-1251 и w indows-1251 ? Но это по моему неважно, т.к. все это ответ сервера. request устанавливает запрос от клеинта. Где ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 12:16 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Не знаю может Гуру в java это и знают, но я (далеко не Гуру) удивился: после изменения метода GET у формы на метод POST все заработало! Кто-нибудь может это прокомментировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 12:48 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Очень хочется, чтобы прокомментировали уважаемые специалисты. У меня похожая проблема , но в моем случае использование метода GET принципиально (запрос на сервер идет через AJAX). По сути, после получения данных из формы нужно сделать их URL декодирование. Как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 14:05 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
В протоколе 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. Michael PonomarevНе знаю может Гуру в java это и знают, но я (далеко не Гуру) удивился: после изменения метода GET у формы на метод POST все заработало! Кто-нибудь может это прокомментировать? Может, элементарное кеширование? Какой браузер? v_777Очень хочется, чтобы прокомментировали уважаемые специалисты. У меня похожая проблема , но в моем случае использование метода GET принципиально (запрос на сервер идет через AJAX). По сути, после получения данных из формы нужно сделать их URL декодирование. Как это сделать? Не покажете код, которым вы формируете запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 19:17 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Michael Ponomarev<%@ page contentType="text/html; charset=cp1251" pageEncoding="windows-1251" %> Браузер не знает кодировки cp1251. Он знает windows-1251. Поэтому вам бы лучше написать Код: plaintext http://java.sun.com/products/jsp/syntax/1.2/syntaxref1210.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 20:04 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Ненавижу регистрациюПравильно так: Код: plaintext 1. Так неправильно. Правильно, как я выше написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 20:06 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
М.Голованов Ненавижу регистрациюПравильно так: Код: plaintext 1. Так неправильно. Правильно, как я выше написал. Спасибо за Ваш комментарий, не знал о переменах java в отношении к кодировкам. Согласен, что Ваш вариант ближе к спецификациям...по крайней мере, начиная с 1.4.2. За 1.4.x (x<2) сказать не могу, но в 1.3.x (и ниже) точно поддерживается только Cp1251. Также в документации к 1.5 я нигде не увидел, что Cp1251 deprecated и т.п. Сказано, что каноническое имя windows-1251, а Cp1251 - alias. Выходит, что мой вариант более универсальный - будет работать везде:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2006, 01:36 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Ненавижу регистрациюСпасибо за Ваш комментарий, не знал о переменах java в отношении к кодировкам. А никаких перемен особых и нет. JVM оперирует своими наименованиями кодировок, которые перечислены в документации на JVM. Баузеры оперируют наименованиями кодировок по регистру IANA. windows-1251 понимается и JVM, и браузерами, так как входит и в регистр IANA, и как каноническое наименование - в кодировки JVM. А вот Cp1251 входит только в кодировки JVM (как алиас) и браузерам неведом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2006, 12:36 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
авторСогласен, что Ваш вариант ближе к спецификациям...по крайней мере, начиная с 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 получаю обломы. Было сделано правильно. Какой тайный смысл переделывать неправильно - загадка. Впрочем, можете не раскрывать вашу тайну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2006, 12:48 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Partisan M авторКакой тайный смысл переделывать неправильно - загадка. а размер получаемой страницы уже не является важным параметром? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2006, 15:03 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
funikovyuri Partisan M а размер получаемой страницы уже не является важным параметром? является, только не в случае с текстом... Если много информации на странице - сделайте несколько страниц, а заморачиваться с кодировками для этих целей - ИМХО фетишизм... Кстати, что Вы будете делать, если попросят оработать с китайскими иероглифами? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 00:12 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
Уважаемый Partisan M , объясните пожалуйста, а чем использование UTF-8 лучше? Я нехочу разжигать религиозную войну, тем более из-за кодировок, но все-же не понимаю столь категоричных высказываний. Если БД воспринимает 1251 и не надо писать alter session, если программа будет использоваться только внутри компании, если, насколько я понял, utf-8 была поставлена только из-за невозможности передать параметры (метод POST небыл опробован). Чем одна кодировка лучше другой? Разумеется мы не говорим о случае использования по назначению(китайский например) и, почему программист, использующий 1 кодировку - хороший, а другую плохой? А вопрос мой был лишь почему при изменении метода GET на метод POST все заработало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 10:22 |
|
||
|
Старо как мир - jsp + руссификация
|
|||
|---|---|---|---|
|
#18+
А вопрос мой был лишь почему при изменении метода GET на метод POST все заработало? На сколько я помню, томкат любил так пошутить. Разные типы запросов(GET/POST), по разному декодировал. Проблема решалась настройками томката. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 12:49 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33640364&tid=2149713]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 489ms |

| 0 / 0 |
