Это может произойти, если кодировка запроса и / или ответа вообще не установлена должным образом.
Для запросов GET вам необходимо настроить его на уровне servletcontainer. Неясно, какой из них вы используете, но, например, Tomcat, который должен выполняться атрибутом URIEncoding
в элементе <Connector>
в его /conf/server.xml
.
<Connector ... URIEncoding="UTF-8">
Для запросов POST вам необходимо создать фильтр, который сопоставлен с желаемым шаблоном URL, охватывающим все эти запросы POST. Например. *.jsp
или даже /*
. Выполните следующую работу в doFilter()
:
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
Для ответов HTML и кодирования на стороне клиента представленных входных значений HTML-формы необходимо установить кодировку страницы JSP. Добавьте это в начало JSP (вы, вероятно, уже сделали это правильно, учитывая тот факт, что отображение прямой формы DB UTF-8 работает нормально).
<%@page pageEncoding="UTF-8" %>
Или, чтобы предотвратить копирование на каждый JSP, настройте его один раз в web.xml
:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
Для файлов исходного кода и стандартного вывода (консоль IDE) необходимо установить кодировку рабочей области IDE. Неясно, какой из них вы используете, но, например, в Eclipse это можно сделать, установив для Window ›Preferences› General ›Workspace› Text File Encoding значение UTF-8.
![введите описание изображения здесь](https://i.stack.imgur.com/ukrYsm.png)
Обратите внимание, что теги HTML <meta http-equiv>
игнорируются, когда страница обслуживается через HTTP. Учитывается только тогда, когда страница открывается из файловой системы локального диска через file://
. Также указывать <form accept-charset>
не нужно, поскольку по умолчанию уже используется кодировка ответа, используемая во время обслуживания HTML-страницы с формой. См. Также спецификацию HTML W3.
Смотрите также:
person
BalusC
schedule
09.05.2012