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.