Rendre Tomcat compatible UTF-8

1. Introduction

UTF-8 est le codage de caractères le plus couramment utilisé dans les applications Web. Il prend en charge toutes les langues actuellement parlées dans le monde, y compris le chinois, le coréen et le japonais.

Dans cet article, nous présentons toutes les configurations nécessaires pour garantir UTF-8 dans Tomcat.

2. Configuration du connecteur

Un connecteur écoute les connexions sur un port spécifique. Nous devons nous assurer que tous nos connecteurs utilisent UTF-8 pour encoder les requêtes.

Ajoutons le paramètre URIEncoding = ”UTF-8 ″ à tous les connecteurs dans TOMCAT_ROOT / conf / server.xml :

3. Filtre de jeu de caractères

Après avoir configuré le connecteur, il est temps de forcer l'application Web à gérer toutes les demandes et réponses en UTF-8.

Définissons une classe nommée 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); } // ... } 

Nous devons ajouter le filtre au fichier web.xml de notre application afin qu'il soit appliqué à toutes les demandes et réponses:

 CharacterSetFilter com.baeldung.CharacterSetFilter   CharacterSetFilter /* 

4. Codage de la page du serveur

L'autre partie de notre application Web que nous devons configurer est les pages du serveur Java.

La meilleure façon de garantir UTF-8 dans les pages du serveur est d'ajouter cette balise en haut de chaque page JSP:

5. Codage de page HTML

Alors que le codage de page de serveur indique à la JVM comment gérer les caractères de page, le codage de page HTML indique au navigateur comment gérer les caractères de page.

Nous devrions ajouter ceci balise dans la section head de toutes les pages HTML:

6. Configuration du serveur MySQL

Maintenant que notre Tomcat est configuré, il est temps de configurer la base de données.

Nous supposons qu'un serveur MySQL est utilisé. Le fichier de configuration est nommé my.ini sous Windows et my.cnf sous Linux.

Nous devons trouver le fichier de configuration, rechercher ces paramètres et les modifier en conséquence:

[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

Nous devons redémarrer le serveur MySQL pour que les modifications prennent effet.

7. Configuration de la base de données MySQL

La configuration du jeu de caractères du serveur MySQL n'est appliquée qu'aux nouvelles bases de données. Nous devons migrer les anciens manuellement. Cela peut être facilement réalisé en utilisant quelques commandes.

Pour chaque base de données:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

Pour chaque table:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Pour chaque colonne VARCHAR ou TEXT :

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

Si nous transmettons des données avec des caractères UTF-8 dans des requêtes de base de données, nous devons nous assurer que toute connexion à la base de données établie est conforme au codage UTF-8.

Pour une connexion basée sur JDBC, cela peut être réalisé avec l'URL de connexion suivante:

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

8. Conclusion

Dans cet article, nous avons montré comment garantir que Tomcat utilise l'encodage UTF-8.