«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.