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




Это очень похоже на проблему с кодировкой символов. Ответ, содержащий знак фунта, отправляется в наборе символов UTF-8, но интерпретируется в другом наборе символов (вероятно, ISO-8859-1).
Проверьте, какую кодировку символов вы указываете для своего JSP, и, если проблема все еще сохраняется, используйте сниффер для исследования ответа, отправляемого формой, и, в частности, любого набора символов, который он указывает. По умолчанию форма должна использовать тот же набор символов, что и страница, на которой она была обслужена, поэтому вы должны иметь возможность контролировать ее, проверяя набор символов страницы.
Ну конечно - моя ошибка! Спасибо, что указали на это несоответствие, я соответствующим образом отредактировал сообщение.
Да, JSP использует UTF-8, поскольку у меня есть эта строка в начале страницы; <% @ page contentType = "text / html" pageEncoding = "UTF-8"%> .. Итак, мне теперь нужно использовать кодировку request.SetCharacter () в сервлете, чтобы указать, что я хочу читать в UTF-8?
Что вы можете сделать, так это на своей странице JSP перед извлечением из объекта запроса установить тип контента для вашего запроса. [Например, request.setCharacterEncoding ("utf-8");]
Теперь вы можете выполнить request.getParameter ("yourParamName");
Я также столкнулся с той же проблемой и решил, как описано выше.
Он будет отправлен как UTF-8 и прочитан как ISO-8859-1, что может быть кодовой страницей по умолчанию на сервере. Обязательно используйте единую кодировку для всех страниц JSP (<% @ page pageEncoding) и чтения формы (request.setCharacterEncoding) для единообразия - UTF-8 почти всегда лучше.