Maison > Java > javaDidacticiel > Comment implémenter correctement le codage UTF-8 dans une application Web Java ?

Comment implémenter correctement le codage UTF-8 dans une application Web Java ?

DDD
Libérer: 2024-12-25 03:12:12
original
301 Les gens l'ont consulté

How to Properly Implement UTF-8 Encoding in a Java Web Application?

Obtention de l'encodage UTF-8 dans les applications Web Java

Problème : Implémentation de l'encodage UTF-8 pour prendre en charge les langues non latines caractères pour le texte et spécifiques alphabets.

Environnement :

  • Développement : Windows XP
  • Production : Debian
  • Base de données : MySQL 5.x
  • Navigateurs : Firefox2, Opera 9.x, FF3, IE7, Google Chrome

Solution :

  1. Configurer le serveur.xml de Tomcat :

    • Activer l'encodage UTF-8 pour les paramètres GET :
  2. CharsetFilter :

    • Forcer l'application Java à gérer toutes les requêtes et réponses en UTF-8.
    • Ajoutez ce filtre au web.xml :

      <filter>
        <filter-name>CharsetFilter</filter-name>
        <filter-class>fi.foo.filters.CharsetFilter</filter-class>
        <init-param>
          <param-name>requestEncoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      Copier après la connexion
  3. Encodage des pages JSP :

    • Spécifiez l'encodage des pages JSP dans web.xml ou ajoutez la balise méta suivante à chaque page :
  4. Connexion JDBC :

    • Utiliser ?useEncoding=true&amp;characterEncoding =UTF-8 en connexion URL.
  5. Base de données et tables MySQL :

    • Créer une base de données et des tables avec DEFAULT CHARACTER SET=utf8 COLLATE=utf8_swedish_ci.
  6. Configuration du serveur MySQL :

    • Définissez default-character-set=utf8 dans my.ini (Windows) ou mon.cnf (Linux).
  7. Procédures et fonctions MySQL :

    • Spécifiez explicitement le jeu de caractères UTF-8, par exemple :
      CRÉER UNE FONCTION... RETOURNE UN JEU DE CARACTÈRES DE TEXTE utf8

Gestion des requêtes GET :

  • Par défaut, les URL sont codées en Latin1, ce qui pose des problèmes avec les fichiers non-ASCII caractères.
  • Pour résoudre ce problème, définissez le codage d'URL dans server.xml comme UTF-8.
  • Demandez aux navigateurs de lire les pages en UTF-8 à l'aide de balises méta et d'en-têtes de requête.

UTF-8 vs Latin1 dans les requêtes GET :

  • Les requêtes POST sont codées en UTF-8 par navigateurs.
  • Pour les requêtes GET, bien que la page soit définie en UTF-8, certains caractères peuvent toujours être codés en Latin1. Cela entraîne un encodage mixte, ce qui rend difficile pour l'application Web de gérer correctement les paramètres de requête.

Références :

  • http://tagunov.tripod.com/i18n/i18n.html
  • http://wiki.apache.org/tomcat/Tomcat/UTF-8
  • http://java.sun.com/developer/technicalArticles/Intl/HT TPCharset/
  • http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html
  • http://cagan327.blogspot.com/2006/05 /utf-8-encoding-fix-tomcat-jsp-etc.html
  • http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-for-mysql-tomcat.html
  • http://jeppesn.dk/utf- 8.html
  • http://www.nabble.com/request-para mètres-mishandle-utf-8-encoding-td18720039.html
  • http://www.utoronto.ca/webdocs/HTMLdocs/NewHTML/iso_table.html
  • http://www. utf8-chartable.de/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal