Magazine Internet

Encodage des flux en J2EE

Publié le 18 décembre 2007 par Spawnrider @spawnrider

Si il y a bien un problème récurant en développement, c’est celui de l’encodage des caractères. On attend avec impatience le support de l’unicode avec PHP 6.… En J2EE, il n’y à pas le choix, il faut coder des filtre, à moins que je sois passé à côté de la solution miracle.

Une solution avec un filtre de servlet fourni par Seb qui fonctionne pour n’importe quel encodage:

1°) Il faut écrire un filtre de servlet qui va réencoder le flux avant envoi au client :

Code (java)
  1. import java.io.IOException;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;
  2.  
  3. import javax.servlet.ServletResponse;
  4.  
  5. public class EncodingFilter implements javax.servlet.Filter {
  6.  
  7. private String encoding;
  8.  
  9. public void init(FilterConfig filterConfig) throws ServletException {
  10.  
  11. this.encoding = filterConfig.getInitParameter("encoding");
  12.  
  13. }
  14.  
  15. public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,  ServletException {
  16.  
  17. request.setCharacterEncoding(encoding);
  18.  
  19. filterChain.doFilter(request, response);
  20.  
  21. }
  22.  
  23. public void destroy() {
  24.  
  25. }
  26.  
  27. }

2°) Il faut ensuite faire appel à ce filtre par l’intérmediaire d’un mapping dans le fichier web.xml comme suit :

Code (xml)
  1. <filter> <filter-name>Encoding Filter</filter-name>
  2.  
  3. <filter-class>EncodingFilter</filter-class>
  4.  
  5. <init-param>
  6.  
  7. <param-name>encoding</param-name>
  8.  
  9. <param-value>UTF-8</param-value>
  10.  
  11. </init-param>
  12.  
  13. </filter>
  14.  
  15. <filter-mapping>
  16.  
  17. <filter-name>Encoding Filter</filter-name>
  18.  
  19. <url-pattern>/*</url-pattern>
  20.  
  21. </filter-mapping>

Maintenant toutes les requêtes sont correctements lues avec l’encodage UTF-8.
Le filtre fonctionne tout autre encodage.

Une autre solution consiste à utiliser le servlet filter CharacterEncodingFilter dans le fichier web.xml afin de forcer l’encodage. Il est important de mettre ce filtre en premier dans la liste.

Code (xml)
  1. <web-app><filter>
  2.  
  3. <filter-name>encodingFilter</filter-name>
  4.  
  5. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  6.  
  7. <init-param>
  8.  
  9. <param-name>encoding</param-name>
  10.  
  11. <param-value>UTF-8</param-value>
  12.  
  13. </init-param>
  14.  
  15. <init-param>
  16.  
  17. <param-name>forceEncoding</param-name>
  18.  
  19. <param-value>true</param-value>
  20.  
  21. </init-param>
  22.  
  23. </filter>
  24.  
  25. </web-app>

Voilà tout ! Pour ma part, j’ai utilisé la première solution qui à résolu pas mal de mes soucis au niveau des formulaires de saisies d’informations.


Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

  • Charset et encodage : ISO-8859-1 ou UTF-8 ?

    Récemment on a pu me faire diverses critiques provenant du fait que j’utilise le jeu de caractères UTF-8. Ajoutez à cela le constat que j’ai déjà fait à de... Lire la suite

    Par  Methylbro
    INTERNET, PROGRAMMATION
  • Charset et encodage : ISO-8859-1 ou UTF-8 ?

    Voici un billet écrit par Méthylbro (développeur web php) sur son blog. Il traite du sujet du charset et de l’encodage. C’est pas mal expliqué. Lire la suite

    Par  Rkueny
    INTERNET
  • LinuxFR en J2EE ?!

    A quoi pourrait ressembler la migration de LinuxFR vers J2EE ?! Peut-être à ceci : Que nous propose donc Pierre Tramo, J2EE Lead Architect, pour la refonte de... Lire la suite

    Par  Clucas
    INFORMATIQUE, JOURNAL INTIME
  • 2 London n back

    London back

    Voilà que cette année, nous fêtons nos 15 années ensemble madame et moi ! Ce n’est pas rien. Pour marquer le coup, nous avions rêver partir découvrir... Lire la suite

    Par  Pierre Martin
    HIGH TECH, INTERNET
  • Epic Browser: pour un surf sans pistage !

    Epic Browser: pour surf sans pistage

    Il existe d'excellents logiciels gratuit qui vous permettent de naviguer anonymement sur Internet tels que AVG PrivacyFix ou encore Epic Browser. La... Lire la suite

    Par  Ahmed El Jaouari
    HIGH TECH, INTERNET
  • Dossier intelligence artificielle open source #2 UIMA

    Dossier intelligence artificielle open source UIMA

    Après Dossier intelligence artificielle open source #1 DeepDive , je vous présente aujourd’hui Unstructured Information Management Architecture (UIMA). Lire la suite

    Par  Edeation
    HIGH TECH, INFORMATIQUE, INTERNET
  • 12 gestes utiles pour moins jeter

    gestes utiles pour moins jeter

    Voici 12 gestes utiles pour moins jeter. Si vous suivez ce blog et appliquez les conseils donnés, vous pratiquez déjà certainement, car j'en ai déjà parlé... Lire la suite

    Il y a 30 minutes par   Brunetisa
    ENVIRONNEMENT, SCIENCE & VIE

A propos de l’auteur


Spawnrider 1431 partages Voir son profil
Voir son blog

Dossiers Paperblog

Magazine