Préparer Tomcat au format UTF-8

Préparer Tomcat au format UTF-8

1. introduction

UTF-8 est l'encodage de caractères le plus courant 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 assurer la sécurité UTF-8 dans Tomcat.

2. Configuration du connecteur

Un connecteur écoute les connexions sur un port spécifique. Nous devons nous assurer queall of our Connectors use UTF-8 to encode requests.

Ajoutons le paramètreURIEncoding=”UTF-8″ à tous les connecteurs deTOMCAT_ROOT/conf/server.xml:



3. Filtre de jeu de caractères

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

Définissons une classe nomméeCharacterSetFilter:

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 auxweb.xml de notre application afin qu'il soit appliqué à toutes les demandes et réponses:


    CharacterSetFilter
    com.example.CharacterSetFilter



    CharacterSetFilter
    /*

4. Encodage de la page serveur

L’autre partie de notre application Web que nous devons configurer concerne les pages de serveur Java.

Lesbest way to ensure UTF-8 in server pages is to add this tag at the top of each JSP page:

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>

5. Encodage de page HTML

Alors que le codage de page de serveur indique à 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 cette balise<meta> dans la sectionhead 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 etmy.cnf sous Linux.

Nous devons trouver le fichier de configuration, rechercher ces paramètres et les éditer 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 est uniquement appliquée aux nouvelles bases de données. Nous devons migrer les anciens manuellement. Ceci 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 colonneVARCHAR ouTEXT:

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, ceci 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 le codage UTF-8.