Gør Tomcat UTF-8-klar

1. Introduktion

UTF-8 er den mest almindelige tegnkodning, der bruges i webapplikationer. Det understøtter alle sprog, der i øjeblikket tales i verden, inklusive kinesisk, koreansk og japansk.

I denne artikel demonstrerer vi al nødvendig konfiguration for at sikre UTF-8 i Tomcat.

2. Stikkonfiguration

Et stik lytter efter forbindelser på en bestemt port. Det skal vi sørge for alle vores stik bruger UTF-8 til at kode forespørgsler.

Lad os tilføje parameteren URIEncoding = ”UTF-8 ″ til alle stik i TOMCAT_ROOT / conf / server.xml:

3. Tegnsætfilter

Efter konfiguration af stikket er det tid til at tvinge webapplikationen til at håndtere alle anmodninger og svar i UTF-8.

Lad os definere en klasse med navnet CharacterSetFilter:

public class CharacterSetFilter implementerer filter {// ... public void doFilter (ServletRequest anmodning, ServletResponse svar, FilterChain næste) kaster IOException, ServletException {request.setCharacterEncoding ("UTF-8"); respons.setContentType ("tekst / html; charset = UTF-8"); respons.setCharacterEncoding ("UTF-8"); next.doFilter (anmodning, svar); } // ...} 

Vi skal tilføje filteret til vores applikationer web.xml så det anvendes på alle anmodninger og svar:

 CharacterSetFilter com.baeldung.CharacterSetFilter CharacterSetFilter / * 

4. Serverkodning

Den anden del af vores webapplikation, vi skal konfigurere, er Java-serversider.

Det den bedste måde at sikre UTF-8 på serversiderne er at tilføje dette tag øverst på hver JSP-side:

5. HTML-sidekodning

Mens serversidekodning fortæller JVM, hvordan man håndterer sidetegn, fortæller HTML-sidekodning browseren, hvordan man håndterer sidetegn.

Vi skal tilføje dette tag i hoved sektion af alle HTML-sider:

6. MySQL-serverkonfiguration

Nu, hvor vores Tomcat er konfigureret, er det tid til at konfigurere databasen.

Vi antager, at der bruges en MySQL-server. Konfigurationsfilen er navngivet my.ini på Windows og my.cnf på Linux.

Vi skal finde konfigurationsfilen, søge efter disse parametre og redigere dem i overensstemmelse hermed:

[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

Vi er nødt til at genstarte MySQL-serveren for at ændringerne kan træde i kraft.

7. MySQL-databasekonfiguration

MySQL-serverens tegnsætskonfiguration anvendes kun til nye databaser. Vi er nødt til at migrere gamle manuelt. Dette kan let opnås ved hjælp af et par kommandoer.

For hver database:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

For hvert bord:

ALTER TABLE tabelnavn KONVERT TIL TEGNESÆT utf8mb4 COLLATE utf8mb4_unicode_ci;

For hver VARCHAR eller TEKST kolonne:

ALTER TABLE tabelnavn SKIFT kolonnenavn kolonnenavn VARCHAR (69) TEGNESÆT utf8mb4 COLLATE utf8mb4_unicode_ci;

Hvis vi videregiver data med UTF-8-tegn i databaseforespørgsler, skal vi sikre, at enhver oprettet databaseforbindelse er UTF-8-kodningskompatibel.

For JDBC-baseret forbindelse kan dette opnås med følgende forbindelses-URL:

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

8. Konklusion

I denne artikel demonstrerede vi, hvordan vi kan sikre, at Tomcat bruger UTF-8-kodning.


$config[zx-auto] not found$config[zx-overlay] not found