Создание Tomcat UTF-8-Ready

Создание Tomcat UTF-8-Ready

1. Вступление

UTF-8 является наиболее распространенной кодировкой символов, используемой в веб-приложениях. Он поддерживает все языки, на которых говорят в настоящее время в мире, включая китайский, корейский и японский.

В этой статье мы продемонстрируем всю конфигурацию, необходимую для обеспечения UTF-8 в Tomcat.

2. Конфигурация коннектора

Соединитель прослушивает соединения через определенный порт. Нам нужно убедиться, чтоall of our Connectors use UTF-8 to encode requests.

Давайте добавим параметрURIEncoding=”UTF-8″ ко всем коннекторам вTOMCAT_ROOT/conf/server.xml:



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 нашего приложения, чтобы он применялся ко всем запросам и ответам:


    CharacterSetFilter
    com.example.CharacterSetFilter



    CharacterSetFilter
    /*

4. Кодировка страницы сервера

Другая часть нашего веб-приложения, которую мы должны настроить, это страницы сервера Java.

best way to ensure UTF-8 in server pages is to add this tag at the top of each JSP page:

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>

5. Кодировка HTML-страницы

В то время как кодировка страницы сервера сообщает JVM, как обрабатывать символы страницы, кодировка страницы HTML сообщает браузеру, как обрабатывать символы страницы.

Мы должны добавить этот тег<meta> в разделhead всех HTML-страниц:

6. Конфигурация сервера MySQL

Теперь, когда наш Tomcat настроен, пора настроить базу данных.

Мы предполагаем, что используется сервер MySQL. Файл конфигурации называетсяmy.ini в Windows иmy.cnf в Linux.

Нам нужно найти файл конфигурации, найти эти параметры и соответственно отредактировать их:

[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

Нам нужно перезапустить сервер MySQL, чтобы изменения вступили в силу.

7. Конфигурация базы данных MySQL

Конфигурация набора символов сервера MySQL применяется только к новым базам данных. Нам нужно перенести старые вручную. Это может быть легко достигнуто с помощью нескольких команд.

Для каждой базы данных:

ALTER DATABASE database_name CHARACTER SET = utf8mb4
    COLLATE = utf8mb4_unicode_ci;

Для каждой таблицы:

ALTER TABLE table_name CONVERT TO
    CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Для каждого столбцаVARCHAR илиTEXT:

ALTER TABLE table_name CHANGE column_name column_name
    VARCHAR(69) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Если мы передаем данные с символами UTF-8 в запросах к базе данных, нам необходимо убедиться, что любое соединение с базой данных соответствует кодировке UTF-8.

Для соединения на основе JDBC это может быть достигнуто с помощью следующего URL соединения:

jdbc:mysql://localhost:3306/?useUnicode=yes;characterEncoding=UTF-8

8. Заключение

В этой статье мы продемонстрировали, как обеспечить, чтобы Tomcat использовал кодировку UTF-8.