Экранирование специальных символов, отправленных в сервлет

У меня есть jsp, содержащий форму, которая отправляет сервлету, когда сервлет получает параметры из формы, перед знаком фунта (£) стоит следующий символ Â. Таким образом, £ становится £. Что вызывает это и как я могу это исправить?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
1 991
2

Ответы 2

Это очень похоже на проблему с кодировкой символов. Ответ, содержащий знак фунта, отправляется в наборе символов UTF-8, но интерпретируется в другом наборе символов (вероятно, ISO-8859-1).

Проверьте, какую кодировку символов вы указываете для своего JSP, и, если проблема все еще сохраняется, используйте сниффер для исследования ответа, отправляемого формой, и, в частности, любого набора символов, который он указывает. По умолчанию форма должна использовать тот же набор символов, что и страница, на которой она была обслужена, поэтому вы должны иметь возможность контролировать ее, проверяя набор символов страницы.

Он будет отправлен как UTF-8 и прочитан как ISO-8859-1, что может быть кодовой страницей по умолчанию на сервере. Обязательно используйте единую кодировку для всех страниц JSP (<% @ page pageEncoding) и чтения формы (request.setCharacterEncoding) для единообразия - UTF-8 почти всегда лучше.

bobince 15.01.2009 03:48

Ну конечно - моя ошибка! Спасибо, что указали на это несоответствие, я соответствующим образом отредактировал сообщение.

Andrzej Doyle 15.01.2009 04:58

Да, JSP использует UTF-8, поскольку у меня есть эта строка в начале страницы; <% @ page contentType = "text / html" pageEncoding = "UTF-8"%> .. Итак, мне теперь нужно использовать кодировку request.SetCharacter () в сервлете, чтобы указать, что я хочу читать в UTF-8?

Deano 17.01.2009 15:41

Что вы можете сделать, так это на своей странице JSP перед извлечением из объекта запроса установить тип контента для вашего запроса. [Например, request.setCharacterEncoding ("utf-8");]

Теперь вы можете выполнить request.getParameter ("yourParamName");

Я также столкнулся с той же проблемой и решил, как описано выше.

Другие вопросы по теме