Tomcat UTF-8-Ready maken

1. Inleiding

UTF-8 is de meest gebruikte tekencodering in webapplicaties. Het ondersteunt alle talen die momenteel in de wereld worden gesproken, inclusief Chinees, Koreaans en Japans.

In dit artikel demonstreren we alle configuratie die nodig is om UTF-8 in Tomcat te garanderen.

2. Connectorconfiguratie

Een Connector luistert naar verbindingen op een specifieke poort. Daar moeten we voor zorgen al onze connectoren gebruiken UTF-8 om verzoeken te coderen.

Laten we de parameter toevoegen URIEncoding = ”UTF-8 ″ naar alle connectoren in TOMCAT_ROOT / conf / server.xml:

3. Tekensetfilter

Na het configureren van de connector, is het tijd om de webapplicatie te dwingen om alle verzoeken en antwoorden in UTF-8 af te handelen.

Laten we een klasse definiëren met de naam CharacterSetFilter:

public class CharacterSetFilter implementeert Filter {// ... public void doFilter (ServletRequest-verzoek, ServletResponse-antwoord, FilterChain next) gooit IOException, ServletException {request.setCharacterEncoding ("UTF-8"); response.setContentType ("text / html; charset = UTF-8"); response.setCharacterEncoding ("UTF-8"); next.doFilter (verzoek, antwoord); } // ...} 

We moeten het filter toevoegen aan onze applicaties web.xml zodat het wordt toegepast op alle verzoeken en reacties:

 CharacterSetFilter com.baeldung.CharacterSetFilter CharacterSetFilter / * 

4. Serverpagina-codering

Het andere deel van onze webtoepassing dat we moeten configureren, zijn Java-serverpagina's.

De De beste manier om UTF-8 op serverpagina's te garanderen, is door deze tag bovenaan elke JSP-pagina toe te voegen:

5. HTML-paginacodering

Terwijl serverpaginacodering JVM vertelt hoe paginatekens moeten worden verwerkt, vertelt HTML-paginacodering de browser hoe paginatekens moeten worden verwerkt.

We moeten dit toevoegen tag in het hoofd sectie van alle HTML-pagina's:

6. MySQL-serverconfiguratie

Nu onze Tomcat is geconfigureerd, is het tijd om de database te configureren.

We gaan ervan uit dat er een MySQL-server wordt gebruikt. Het configuratiebestand heeft de naam my.ini op Windows en mijn.cnf op Linux.

We moeten het configuratiebestand vinden, naar deze parameters zoeken en ze dienovereenkomstig bewerken:

[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collatie-server = utf8mb4_unicode_ci

We moeten de MySQL-server opnieuw opstarten om de wijzigingen door te voeren.

7. MySQL-databaseconfiguratie

De configuratie van de MySQL-serverkarakterset wordt alleen toegepast op nieuwe databases. We moeten oude handmatig migreren. Dit kan eenvoudig worden bereikt met een paar opdrachten.

Voor elke database:

ALTER DATABASE databasenaam CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

Voor elke tafel:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Voor elk VARCHAR of TEKST kolom:

ALTER TABLE tabelnaam CHANGE kolomnaam kolomnaam VARCHAR (69) TEKENSET utf8mb4 COLLATE utf8mb4_unicode_ci;

Als we gegevens met UTF-8-tekens doorgeven in databasequery's, moeten we ervoor zorgen dat elke gemaakte databaseverbinding compatibel is met UTF-8-codering.

Voor op JDBC gebaseerde verbindingen kan dit worden bereikt met de volgende verbindings-URL:

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

8. Conclusie

In dit artikel hebben we laten zien hoe u ervoor kunt zorgen dat Tomcat de UTF-8-codering gebruikt.