Осъществяване на Tomcat UTF-8-Ready

1. Въведение

UTF-8 е най-честото кодиране на символи, използвано в уеб приложения. Той поддържа всички езици, които в момента се говорят по света, включително китайски, корейски и японски.

В тази статия ние демонстрираме цялата конфигурация, необходима за осигуряване на UTF-8 в Tomcat.

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

Конекторът слуша връзки на определен порт. Трябва да се уверим, че всички наши конектори използват UTF-8 за кодиране на заявки.

Нека добавим параметъра 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.baeldung.CharacterSetFilter   CharacterSetFilter /* 

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

Другата част от нашето уеб приложение, което трябва да конфигурираме, са страниците на Java сървъра.

Най -добрият начин да осигурите UTF-8 в сървърните страници е да добавите този маркер в горната част на всяка JSP страница:

5. Кодиране на HTML страница

Докато кодирането на страницата на сървъра казва на JVM как да борави със символите на страницата, HTML кодирането на страници казва на браузъра как да борави със символите на страницата.

Трябва да добавим това таг в главата на всички 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.