«1. Введение
UTF-8 — наиболее распространенная кодировка символов, используемая в веб-приложениях. Он поддерживает все языки, на которых в настоящее время говорят в мире, включая китайский, корейский и японский.
В этой статье мы демонстрируем все настройки, необходимые для обеспечения UTF-8 в Tomcat.
2. Конфигурация коннектора
Коннектор прослушивает соединения на определенном порту. Нам нужно убедиться, что все наши соединители используют UTF-8 для кодирования запросов.
Давайте добавим параметр URIEncoding=“UTF-8” ко всем коннекторам в TOMCAT_ROOT/conf/server.xml:
<Connector
URIEncoding="UTF-8"
port="8080"
redirectPort="8443"
connectionTimeout="20000"
protocol="HTTP/1.1"/>
<Connector
URIEncoding="UTF-8"
port="8009"
redirectPort="8443"
protocol="AJP/1.3"/>
3. Фильтр набора символов
После настройки коннектора пришло время чтобы заставить веб-приложение обрабатывать все запросы и ответы в кодировке UTF-8.
Давайте определим класс с именем CharacterSetFilter:
public class CharacterSetFilter implements Filter {
// ...
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain next) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
next.doFilter(request, response);
}
// ...
}
Нам нужно добавить фильтр в файл web.xml нашего приложения, чтобы он применялся ко всем запросам и ответам:
<filter>
<filter-name>CharacterSetFilter</filter-name>
<filter-class>com.baeldung.CharacterSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterSetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4. Кодирование страницы сервера ~ ~~ Другая часть нашего веб-приложения, которую нам нужно настроить, — это страницы сервера Java.
Лучший способ обеспечить использование UTF-8 на страницах сервера — добавить этот тег вверху каждой страницы JSP: символы страницы, кодировка страницы HTML сообщает браузеру, как обрабатывать символы страницы.
Мы должны добавить этот тег \u003cmeta\u003e в раздел head всех HTML-страниц:
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
6. Конфигурация сервера MySQL
Теперь, когда наш Tomcat настроен, пришло время настроить базу данных.
Мы предполагаем, что используется сервер MySQL. Файл конфигурации называется my.ini в Windows и my.cnf в Linux.
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
Нам нужно найти файл конфигурации, найти эти параметры и отредактировать их соответствующим образом:
Нам нужно перезапустить сервер MySQL, чтобы изменения вступили в силу.
7. Конфигурация базы данных MySQL
Конфигурация набора символов сервера MySQL применяется только к новым базам данных. Нам нужно перенести старые вручную. Этого легко добиться с помощью нескольких команд.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
Для каждой базы данных:
Для каждой таблицы:
Для каждого столбца VARCHAR или TEXT:
Если мы передаем данные с символами UTF-8 в запросах к базе данных , нам необходимо убедиться, что любое соединение с базой данных совместимо с кодировкой UTF-8.
ALTER DATABASE database_name CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
Для подключения на основе JDBC этого можно добиться с помощью следующего URL-адреса подключения:
ALTER TABLE table_name CONVERT TO
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
8. Заключение
ALTER TABLE table_name CHANGE column_name column_name
VARCHAR(69) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
В этой статье мы продемонстрировали, как убедиться, что Tomcat использует кодировку UTF-8.
«
jdbc:mysql://localhost:3306/?useUnicode=yes;characterEncoding=UTF-8
8. Conclusion
In this article, we demonstrated how to ensure Tomcat uses the UTF-8 encoding.