IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Encodage UTF-8 Tomcat


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Encodage UTF-8 Tomcat
    Bonjour,

    Je ne parviens pas à maintenir un encodage UTF-8 entre les servlets et les JSP. Chaque fois qu'il y a des accents, ils se transforment en faux caractères.

    Dans la servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ArrayList<String> t = new ArrayList<String>();
    t.add("éàöi");
    request.setAttribute("test", t);
    Dans la JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <logic:iterate id="test_values" name="test">
       <bean:write name="test_values" />
    </logic:iterate>
    Je précise que je travaille sous Eclipse, en mettant l'encoding à UFT-8.
    J'ai essayé plusieurs choses mais rien ne marche

    > URIEncoding="UTF-8" dans le server.xml de Tomcat (v6.0.14)

    > request.setCharacterEncoding("UTF-8"); dans les servlets

    >
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> ou <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> dans les JSP

    mais rien n'y fait... quelqu'un aurait une solution ?

    Je précise également que cela fonctionne correctement en ISO-8859-1 mais que cet encodage ne m'intéresse pas. De plus, les fichiers properties avec accents sont lus correctement.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Code Interface HttpServletResponse : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public java.io.PrintWriter getWriter() throws java.io.IOException
     
        Returns a PrintWriter object that can send character text to the client. The
    character encoding used is the one specified in the charset= property of the 
    setContentType(java.lang.String) method, which must be called before calling
    this method for the charset to take effect.
     
        If necessary, the MIME type of the response is modified to reflect the 
    character encoding used.
     
        Either this method or getOutputStream() may be called to write the body, 
    not both.

    L'encodage est bien défini, comme tu l'indique, par "text/html;charset=UTF-8"

    Par contre:
    1) il ne peut plus changer à partir du moment où un writer a été demandé au à l'objet response (JSP utilise le writer)
    2) rien ne sert de modifer le codage du request, çà a rien a voir avec le response, çà détermine comment décoder les parameter
    3) l'uri encoding sert à dire comment tomcat doit interpréter les caractères non ascii dans l'url demandée

    Donc si t'as pas d'utf-8 dans la réponse:
    - soit tu a un jsp qui passe en iso (sale bête)
    - soit ton code java a un problème d'encodage lui même (vérifie avec un éditeur hexa, chacun de tes caractère accentué doit prendre 2 byte en utf-8
    - soit t'as pas configuré ton compilateur en lui disant "mon code source c'est de l'utf-8" et il a pris l'encodage par défaut de la plateforme (et oui, on oublie parfois qu'il faut aussi configurer l'encodage du compilateur à la même valeur que celle de l'éditeur)
    - soit tu demande un writer à tomcat dans ton servlet avant de définir l'encodage à utf-8

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    j'ai le même souci sous tomcat 5.5 et 6.0 sur des caractères polonais ...
    ... une solution trouvée ?

Discussions similaires

  1. Tomcat encodage UTF-8
    Par w3blogfr dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 08/01/2010, 09h29
  2. Problème d'affichage avec encodage utf-8
    Par t-die dans le forum Zend
    Réponses: 3
    Dernier message: 04/12/2006, 14h55
  3. [C# 2.0] Comment réaliser un encodage UTF-8 ?
    Par StormimOn dans le forum C#
    Réponses: 2
    Dernier message: 18/10/2006, 10h35
  4. Pb Encodage UTF-8 pour Ooo
    Par Sylvain James dans le forum XMLRAD
    Réponses: 10
    Dernier message: 08/03/2006, 22h28
  5. [WebForms] Encodage, UTF-8 et accents
    Par alexischmit dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 28/04/2004, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo