В настоящее время я изучаю JEE, и в рамках упражнения мне просто нужно отправить текстовые данные из файла .jsp в другой, используя базовую форму с методом POST.В этой форме я хочу иметь возможность использовать акцентированные символы, поэтому я использую <%@page pageEncoding="UTF-8" %>
поверх моих файлов jsp, у них также есть и теги <meta charset="utf-8">
, и моя IDE (Eclipse) сконфигурирована для кодирования всего в UTF-8.
Проблема в том, что в конце строки, когда я пытаюсь отобразить свои символы, используя EL, акцентированные символы (и другие, которые я предполагаю) кодируются в ISO-8859-1.
Что действительно необычно, так это то, что при отправке данных методом GET у меня вообще не возникает никаких проблем.Тот же результат, когда я передаю строку в запросе через атрибут, заданный в сервлете.
Фактически я уже решил проблему, отправив запрос сервлету и вызвав request.setCharacterEncoding("utf-8")
в методе doPost (давайте уточнимэтот вызов request.getCharacterEncoding()
до этого дает мне null
), но я бы хотел понять, что именно здесь происходит.Я предполагаю, что это происходит из-за неправильной конфигурации сервера, но когда я проверяю файл web.xml конфигурации моего сервера, у меня появляются следующие строки:
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
Моя путаница связана с тем, что никто никогда не говорил мне использоватьrequest.setCharacterEncoding("utf-8")
, и что мне не кажется нормальным, что я должен был бы это сделать, поэтому я предполагаю, что вопрос будет: я должен обязательно его использовать?Зачем ?Разве кодировка не должна обрабатываться конфигурацией сервера?
Я использую Tomcat 9 для сервера и работаю под Ubuntu (не знаю, помогает ли это).