У меня есть это веб-приложение в JSP, работающее на сервере приложений JBoss. Я использую сервлеты для дружественных URL-адресов. Я отправляю параметры поиска через свои JSP и сервлеты. Я использую форму с текстовым полем, сервлет
Первый сервлет использует request.getParameter() для получения текста и отправляет его другому сервлету с response.sendRedirect (маскируя URL-адрес для чего-то «дружественного»). Этот последний сервлет использует request.getRequestDispatcher().forward() для отправки параметров в JSP "уродливым" способом: searchResults.jsp?searchParameters=Parameters.
Теперь, когда отображается страница результатов поиска, URL-адрес отображает правильный поисковый запрос с «дружественным URL-адресом». Пример: http://site.com/search/My-Search-Query даже при использовании специальных символов, таких как: http://site.com/search/Busqué-tildes-y-eñies. Но когда я пытаюсь использовать этот поисковый запрос в своем JSP, специальные символы отображаются неправильно.
Вся система использует i18n, и до сих пор у нас не было проблем со специальными символами. Но когда информация отправляется через форму (скажем, из index.jsp в searchResults.jsp), специальные символы отображаются неправильно:
á - á
é - é
í - Ã
ó - ó
ú - ú
ñ - ñ
Вся кодовая база должна быть в UTF-8, но, видимо, я что-то упускаю при передаче параметров. Как я уже сказал, они корректно отображаются в URL, но не внутри JSP.
Я думал преобразовать эти á вручную, но я думаю, что есть лучший способ сделать это правильно, используя правильную кодировку. Кроме того, позже могут появиться новые персонажи, о которых я сейчас не знаю (французский, испанский и т.
На всякий случай дам вам знать, что у меня есть эти строки на каждом JSP:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
ИЗМЕНИТЬ
Спасибо за ваши ответы. Я пробовал несколько вещей, но ничто не решило проблему.
Вот что я сделал:
Я добавил ServletRequestListener, который устанавливает кодировку символов сеанса в UTF-8, и фильтр для каждого запроса Http, который делает то же самое.
Как я уже сказал, все в JSP закодировано с помощью UTF-8 (см. соответствующие заголовки).
Я напечатал кодировку символов сервлетов на консоли, которая по умолчанию была нулевой, установил для них значение UTF-8, как сказали @kgiannakakis и @saua.
Ни одно из этих действий не устраняет проблему. Мне интересно, есть ли что-то еще не так с этим...