У меня есть это веб-приложение в 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"%>
EDIT
Спасибо за ваши ответы. Я попробовал несколько вещей, но ничего не устранило проблему.
Вот что я сделал:
Я добавил ServletRequestListener, который устанавливает кодировку символов сеанса в UTF-8, и Фильтр для каждого запроса Http, который делает то же самое.
Как я уже сказал, все в JSP кодируется с помощью UTF-8 (см. Соответствующие заголовки).
Я распечатал кодировку символов сервлетов на консоли, которые по умолчанию были нулевыми, установил их в UTF-8, как @kgiannakakis и @saua.
Ни одно из этих действий не решает проблему. Мне интересно, что-то не так с этим ...