У меня случилось так, что при интернационализации моего веб-проекта, русские символы отображаются кракозябрами.
Что я делал:
1. Я использую properties-файлы, в которых на нужном языке пишу текст. Нужно проверить, чтобы текст в данных файлах был установлен как
UTF-8.
Это не помогло. Идём дальше.
2. Через
Filter задать кодировку
UTF-8.
Создаем фильтр, в котором будем устанавливать кодировку
UTF-8 для
request и
response:
@WebFilter(filterName = "EncodingFilter", urlPatterns = {"/controller"})
public class EncodingFilter implements Filter {
private static final Logger LOGGER = LogManager.getLogger();
private final static String ENCODING_UTF_8 = "UTF-8";
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
LOGGER.info("Current encoding for request: {}, for response: {}.", servletRequest.getCharacterEncoding(), servletResponse.getCharacterEncoding());
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
request.setCharacterEncoding(ENCODING_UTF_8);
response.setCharacterEncoding(ENCODING_UTF_8);
LOGGER.info("Set encoding for request: {}, for response: {}.", request.getCharacterEncoding(), response.getCharacterEncoding());
filterChain.doFilter(request, response);
}
}
Но и это не помогло. Идём дальше.
3. Для каждой jsp-страницы нужно также задать кодировку UTF-8.
Сделать это можно двумя способами:
1. Прописав в
web.xml файле настройки:
<!-- Encoding for jsp-pages to UTF-8 -->
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
2. Прописать на каждой jsp-странице:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Но и это не помогло. Идём дальше.
4. Потом я, согласно [документации](
tomcat.apache.org/tomcat-7.0-doc/config/http.html), настроил `Tomcat` следующим образом.
Открываем файл
C:\Program Files\Apache Software Foundation\Tomcat 10.0\conf\server.xml и добавляем в секцию атрибут
URIEncoding="UTF-8". В конечном итоге секция будет выглядеть следующим образом:
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
Но и это не помогло. Перезагрузил ноутбук, думал поможет, но не заработало. Опять идём дальше.
5. Добавляем на jsp-страницу вот это:
<%request.setCharacterEncoding("UTF-8");%>
На выходе получаю:
ÐлавнаÑ
РнаÑ
ÐонÑакÑÑ
И это тоже не работает. В чем проблема?