![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Lubomyr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.10.2005 Репутация: нет Всего: нет |
Сервлет получает Post с формы (кирилицу) и перекодирует его непонятным образом.
То есть если выводить ето значение - получается непонятный набор непонятных символов. Под Windows все работает коректно! При чем данные из базы, кирилица закодированная в сервлете выводятся коректно всегда. Кодировка везде UTF-8; Сервер JBOSS 3.2.1. В самом начале всегда стоит request.setCharacterEncoding("UTF-8"); Когда надо выводить ставлю - response.setContentType("text/html; charset=UTF-8"); <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" .... тоже везде; Даже уже ACCEPTCHARSET="utf-8" везде в формах поставил... Понимаю, что проблемма может быть в региональных настройках или настройках ОС (Free BSD). Нельзя ли сделать код независимым от этих настроек? И что вообще надо исправить? Буду признателен за ответ. |
|||
|
||||
tux |
|
||||||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Насколько я понимаю кодировка выставляется уже в сервлете. Попробуй выставлять ее в фильтре. Класс фильтра примерно такой:
В web.xml нужно добавить следующее:
|
||||||
|
|||||||
Lubomyr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.10.2005 Репутация: нет Всего: нет |
Спасибо. Сделал так. Все равно данные которые получены методом Get request.getParameter считывает в кодировке ISP-8859-1, а приходят они в правильной, UTF-8.
То есть строку в пинципе можно получить, используя: String newString = new String(badString.getBytes("ISO-8859-1"), "UTF-8"); Но это не универсальный подход... Под другой платформой может не сработать... Post работает нормально. |
|||
|
||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Прописал фильтр - а он выдает ошибку - не могу понять почему (используется struts)
Это сообщение отредактировал(а) seth - 1.10.2006, 20:07 |
|||
|
||||
3x3 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Тут читай. Jsp должно начинаться заклинанием:
Не принудительным выставление кодировки, заметь, а только если она не выставлена. С сервлетом так же: Для начала любой деятельности - настроить кодировку реквеста и респонса. Это всё. -------------------- Зачем платить больше, когда можно заплатить дважды? |
||||
|
|||||
UnicornMirage |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 15.11.2005 Репутация: нет Всего: 1 |
нужно запустить JBoss или какой там у тебя сервер - с параметром
и UTF не будет нужен Это сообщение отредактировал(а) UnicornMirage - 2.10.2006, 08:50 |
||||
|
|||||
y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 7 Всего: 13 |
ни фига подобного, во-первых - это параметр для дефолтной кодировки зачитываемых ридерами файлов, при чем тут реквест/респонз? во-вторых, при таком параметре я не смогу работать со, скажем, китайским, арабским, японским, ивритом и пр... В JAVA надо юзать юникодные кодировки! Это сообщение отредактировал(а) y3u - 2.10.2006, 10:53 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
UnicornMirage |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 15.11.2005 Репутация: нет Всего: 1 |
просто ты сказал что работаешь с кириллицей - зачем тогда юникод - лишняя трата трафика?
установка этого параметра не влияет на реквесты/респонсы - т.к. там они задаются как было сказано выше. а вот этот параметр указывает виртуальной машине кодировку по-умолчанию, не зависимо от настроек ОС. и поэтому если ты напишешь
то у тебя данные в строке будут в той кодировке, которая была в -Dfile.encoding=windows-1251 а у автора темы было жестко привязано в коде:
Это сообщение отредактировал(а) UnicornMirage - 2.10.2006, 11:01 |
||||
|
|||||
ishi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.10.2006 Репутация: -1 Всего: нет |
Здравствуйте! Наконец нашел время ответить. Значит, дело обстоит так: 0)Хватит флудить о том, чего не знаете, хотя в спорах рождается истина, но вы уже задолбали человека. 1).Дело в том, что платформа тут ни при чем. Фирме sun давно известно о проблемах с интернациональными кодировками в сервлетах. Они разработали специальный пакет National Servlets, Который решает эту проблему. Класс простенький и не требует переписания всего кода сервлета. 2) Второй вопрос, это то , что tomcat довольно примитивно определяет кодировку запроса, поэтому не удивительно, что в большинстве случаев это null или ничего не значащий "url-encoding". Советую почитать, если для вас это важно, эту статью "http://ishi.dev.juga.ru/servlet/site?tar=gt&theme=106", причем обратите внимание, что сайт, на который вы зайдете сидит на линуксе, полностью построен на сервлетах + MySQL, так что это живой пример решения вашей проблемы. 3) Третий вопрос - это MySQL драйвер может корежить кодировки при получении из базы строковых данных. Здесь я тоже могу подкинуть один класс, который решает эту проблему. Но если Ваш сайт используется в коммерческих целях, то класс будет платный. |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
National Servlets - это вот это - http://servlets.chat.ru/? О, великий гуру, простите за глупость, но при чем же здесь Sun? Tomcat определяет кодировку запроса в соответствии со спецификацией, не больше не меньше. Существует набор давно выработанных практик, которые позволяют избавится от каких-либо проблем с кодировками. Часть из них описаны в этой теме. Кстати, хостинг, насколько я понимаю, не ваш. Как же вы утверждаете, что это живой пример если даже веб-контейнер настроили за вас? Пардон, еще раз извиняюсь. А где выше в теме было про MySQL? Оффтоп, однако. Кстати, насчет коммерции. Если вы будете руки использовать в коммерческих целях, могу предложить дрова по сходной цене.
Знаете, здесь без вас есть кому решать где флуд, а где нет. Минус за неуважение к сообществу форума. |
|||
|
||||
3x3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Приложение-то, насколько я понял, его. -------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
3x3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Да, на нём: http://forum.juga.ru/showthread.php?threadid=295 ____ По крайней мере своей рекламой он пропиарил хостинг ![]() -------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
ishi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.10.2006 Репутация: -1 Всего: нет |
Да ребята, не пойму, к чему вообще тогда велась беседа.
National Servlets - это пакет от sun? а не чат. Вы плохо искали . Я приложу его в файле. Во вторых на juga.ru сидит сайт - пример, в разработке которого я принимал участие. Это ishi.dev.juga.ru. что касается всяких там дефолтов, то этот сайт сделан как пример работы независимо от настроек. Что касается коммерции, то надо уважать чужой труд. И если мои друзья потрудились разработать класс, который позволяет работать на любом хосте незадумываясь о настройках, а кто то использует его, чтобы бабулетов заработать, то я сам приверженец того, чтобы делиться с теми, кто мне помогает. Так что имею полное право предупреждать о коммерческом использовании. Касательно того как tomcat определяет кодировку запроса, то я смотрел в коде САМОГО и ничего примитивнее ещё не видел в этом смысле, будь это хоть трижды спецификация. Так что если человеку нужна помощь, я предложил действенный совет. Попробуйте и увидите. ..... А как файл присоединить. ... В общем не найду такой кнопки здесь. Если найду ссылку на sun-овском сайте, вернее вспомню, то пришлю. Хотя можете сами поискать. И juga.ru просто показал вам пример, как работает то , о чем я говорю. Вживую. Кстати, у них сегодня с сервером проблемы. Причам часто такое. Так что пиарить там нечего. Ну прчему вы болтаете как вам хочется, а мне так сразу минус. Может я так разговариваю. Ладно, всем удачи. Надеюсь, чем то помог. |
|||
|
||||
ishi |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.10.2006 Репутация: -1 Всего: нет |
Вы привели эту ссылку http://forum.juga.ru/showthread.php?threadid=295 по поводу Resin. Это что шутка такая? У меня дома стоит FreeDSD 4 без русского языка вообще, без иксов. Только jdk1.4, jre 5, apache 3 с чем то и 5-й tomcat. на виртуальной машине работает, как отдельный компьютер. На tomcat сидит такой же мой сайт, как я вам приводил в примере. Так вот, я обращаюсь к нему из винды и с русскими буквами проблем тоже нет, хотя я там ничего вообще не настраивал дополнительно, лень просто. Всё по умолчанию. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |