Создание 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.