Preparare Tomcat UTF-8

1. Introduzione

UTF-8 è la codifica dei caratteri più comune utilizzata nelle applicazioni web. Supporta tutte le lingue attualmente parlate nel mondo, inclusi cinese, coreano e giapponese.

In questo articolo, dimostriamo tutta la configurazione necessaria per garantire UTF-8 in Tomcat.

2. Configurazione del connettore

Un connettore ascolta le connessioni su una porta specifica. Dobbiamo assicurarci che tutti i nostri connettori utilizzino UTF-8 per codificare le richieste.

Aggiungiamo il parametro URIEncoding = "UTF-8" a tutti i connettori in TOMCAT_ROOT / conf / server.xml :

3. Filtro set di caratteri

Dopo aver configurato il connettore, è il momento di forzare l'applicazione Web a gestire tutte le richieste e le risposte in UTF-8.

Definiamo una classe denominata 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); } // ... } 

Dobbiamo aggiungere il filtro al web.xml della nostra applicazione in modo che venga applicato a tutte le richieste e risposte:

 CharacterSetFilter com.baeldung.CharacterSetFilter   CharacterSetFilter /* 

4. Codifica pagina server

L'altra parte della nostra applicazione web che dobbiamo configurare sono le pagine del server Java.

Il modo migliore per garantire UTF-8 nelle pagine del server è aggiungere questo tag nella parte superiore di ogni pagina JSP:

5. Codifica della pagina HTML

Mentre la codifica della pagina del server dice a JVM come gestire i caratteri della pagina, la codifica della pagina HTML dice al browser come gestire i caratteri della pagina.

Dovremmo aggiungere questo tag nella sezione head di tutte le pagine HTML:

6. Configurazione del server MySQL

Ora che il nostro Tomcat è configurato, è il momento di configurare il database.

Partiamo dal presupposto che venga utilizzato un server MySQL. Il file di configurazione è denominato my.ini su Windows e my.cnf su Linux.

Dobbiamo trovare il file di configurazione, cercare questi parametri e modificarli di conseguenza:

[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

È necessario riavviare il server MySQL affinché le modifiche abbiano effetto.

7. Configurazione del database MySQL

La configurazione del set di caratteri del server MySQL viene applicata solo ai nuovi database. Dobbiamo migrare quelli vecchi manualmente. Ciò può essere facilmente ottenuto utilizzando pochi comandi.

Per ogni database:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

Per ogni tavolo:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Per ogni colonna VARCHAR o TEXT :

ALTER TABLE table_name CHANGE column_name column_name VARCHAR(69) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Se passiamo dati con caratteri UTF-8 nelle query di database, dobbiamo assicurarci che qualsiasi connessione al database effettuata sia conforme alla codifica UTF-8.

Per la connessione basata su JDBC, ciò può essere ottenuto con il seguente URL di connessione:

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

8. Conclusione

In questo articolo, abbiamo dimostrato come garantire che Tomcat utilizzi la codifica UTF-8.