Gjør Tomcat UTF-8-klar

1. Introduksjon

UTF-8 er den vanligste tegnkodingen som brukes i webapplikasjoner. Den støtter alle språk som for øyeblikket snakkes i verden, inkludert kinesisk, koreansk og japansk.

I denne artikkelen demonstrerer vi all konfigurasjon som er nødvendig for å sikre UTF-8 i Tomcat.

2. Koblingskonfigurasjon

En kontakt lytter etter tilkoblinger på en bestemt port. Det må vi sørge for alle kontaktene våre bruker UTF-8 for å kode forespørsler.

La oss legge til parameteren URIEncoding = ”UTF-8 ″ til alle kontaktene i TOMCAT_ROOT / conf / server.xml:

3. Tegnsettfilter

Etter å ha konfigurert kontakten, er det på tide å tvinge webapplikasjonen til å håndtere alle forespørsler og svar i UTF-8.

La oss definere en klasse som heter CharacterSetFilter:

public class CharacterSetFilter implementerer filter {// ... public void doFilter (ServletRequest request, ServletResponse response, FilterChain next) kaster IOException, ServletException {request.setCharacterEncoding ("UTF-8"); response.setContentType ("text / html; charset = UTF-8"); respons.setCharacterEncoding ("UTF-8"); next.doFilter (forespørsel, svar); } // ...} 

Vi må legge til filteret i applikasjonene våre web.xml slik at den brukes på alle forespørsler og svar:

 CharacterSetFilter com.baeldung.CharacterSetFilter CharacterSetFilter / * 

4. Serverkoding

Den andre delen av webapplikasjonen vi trenger å konfigurere er Java-server sider.

De den beste måten å sikre UTF-8 på serversider er å legge til denne taggen øverst på hver JSP-side:

5. HTML-sidekoding

Mens koding av serversiden forteller JVM hvordan de skal håndtere sidetegn, forteller HTML-sidekoding nettleseren hvordan de skal håndtere sidetegn.

Vi bør legge til dette tag i hode delen av alle HTML-sidene:

6. MySQL-serverkonfigurasjon

Nå som Tomcat er konfigurert, er det på tide å konfigurere databasen.

Vi antar at det brukes en MySQL-server. Konfigurasjonsfilen heter min.ini på Windows og my.cnf på Linux.

Vi må finne konfigurasjonsfilen, søke etter disse parametrene og redigere dem deretter:

[klient] standard-tegnsett = utf8mb4 [mysql] standard-tegnsett = utf8mb4 [mysqld] tegnsett-klient-håndtrykk = FALSE tegnsett-server = utf8mb4 sorteringsserver = utf8mb4_unicode_ci

Vi må starte MySQL-serveren på nytt for at endringene skal tre i kraft.

7. MySQL Database Configuration

MySQL-server tegnsettkonfigurasjon brukes bare på nye databaser. Vi må migrere gamle manuelt. Dette kan enkelt oppnås ved hjelp av noen få kommandoer.

For hver database:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

For hvert bord:

ALTER TABLE tabellnavn KONVERTER TIL KARAKTERSETT utf8mb4 COLLATE utf8mb4_unicode_ci;

For hver VARCHAR eller TEKST kolonne:

ALTER TABLE tabellnavn SKIFT kolonnenavn kolonnenavn VARCHAR (69) KARAKTERSETT utf8mb4 COLLATE utf8mb4_unicode_ci;

Hvis vi sender data med UTF-8-tegn i databasespørsmål, må vi sørge for at en hvilken som helst databaseforbindelse som gjøres, er UTF-8-kodingskompatibel.

For JDBC-basert tilkobling kan dette oppnås med følgende tilkoblings-URL:

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

8. Konklusjon

I denne artikkelen demonstrerte vi hvordan vi kan sikre at Tomcat bruker UTF-8-kodingen.


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