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

Servlets/JSP Java Discussion :

encodage en UTF-8


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut encodage en UTF-8
    Bonjour,

    Après plusieurs recherches sur le forum et google concernant l'encodage des caractères en UTF-8, je n'arrive toujours pas à régler mon problème.

    Nous sommes 3 à travailler sur un projet. Nous utilisons tous eclipse 3.2 et tomcat 5.5.12 sur les 3 configurations, l'une pose problème avec l'encodage en UTF-8, on a beau chercher mais cela reste sans succès.

    J'ai mis en place une jsp des plus simple que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@page import="java.net.URLEncoder"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    String encoding = request.getCharacterEncoding();
     
    if (encoding == null || !encoding.equalsIgnoreCase("UTF-8")) {
      try {
        request.setCharacterEncoding("UTF-8");
      } catch (Exception e) {
      }
    }
     
    String var = request.getParameter("var") != null ? request.getParameter("var") : "null";
    String param = request.getParameter("param") != null ? request.getParameter("param") : "";
    param = param.equals("") ? var : param;
    %>
     
    <form action="test-utf.jsp" method="post">
    <input type="text" value="" name="var">
    <input type="submit" value="ok">
    </form>
     
    <p>var = <%= var %></p>
    <p>param = <%= param %></p>
    <p><a href="test-utf.jsp?param=<%= URLEncoder.encode(param, "UTF-8") %>" title="<%= param %>">lien avec <%= param %></a></p>
    </body>
    </html>
    Cette JSP fonctionne donc bien sur 2 configurations mais pas sur la dernière. Elle renvoit toujours les accents bizarrement encodés.

    Nous avons vérifié les configurations d'eclipse qui encodent bien en UTF-8 les fichiers et le serveur.xml de tomcat nous avons bien mis la ligne URIEncoding en UTF-8 dans le connector.

    Et on ne parvient toujours pas à faire fonctionner cette JSP...

    La seule façon de corriger le problème est de remplacer la ligne qui recupère le paramètre envoyé par le formulaire par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String var = new String((request.getParameter("var") != null ? request.getParameter("var") : "null").getBytes("ISO-8859-1"), "UTF-8");
    Mais le fait de rajouter cette ligne, cela ne fonctionne plus sur les 2 autres configurations, les caractères accentués sont remplacés par des "?"

    Merci de nous éclairer...

  2. #2
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Bonjour,

    Difficile de répondre dans ces conditions
    Vous utiliser bien les mêmes versions de navigateur?

    Un conseil que je peux te donner, c'est d'utiliser ieHTTPHeader.

    http://www.blunck.info/iehttpheaders.html

    C'est un plugin pour IE qui sert a catcher tout le flux de requete, tu peux voir le header et plein d'info interessant.

    Compares les trois flux sur une même page, et si tu ne vois pas de différence, cela vient forcement de ton browser.
    Etre c'est etre relatif.

  3. #3
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour ta répose même si elle nous aide pas vraiment.

    Nous bossons tous avec les mêmes navigateur à savoir firefox 1.5.0.6 et IE 6. et le résultat reste le même...

    En tout cas, nous allons essayer de voir ce qu'il se passe au niveau des navigateurs peut-être aura t-on un début de réponse. Je connais ieHTTPReader, je vais le faire de suite ainsi que sous firefox (extension tamper Data).

    Mais, j'ai comme l'impression après de nombreuses recherches qu'il n'y a pas vraiment d'explication sur "comment configurer un serveur en UTF-8". De même que cela reste pas toujours aussi peu evident à la vue des nombreuses réaction sur ce sujet...

    merci en espérant trouver la solution

  4. #4
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Alors, j'ai vérifier les données dans IE et firefox, et on a exactement la même chose.

    Le charset est bien en UTF-8 et le content-type aussi.

    J'ai envoyé via le formulaire le caractère "é", et il est encodé comme suit "%C3%A9" donc jusque là tout va bien.

    Par contre dès que la variable est affichée nous avons bien un "é" sur l'un des postes et sur l'autre "é".

    Donc tout se passe bien sauf au moment de l'affichage et/ou récupération de la variable... ???

    étrange...

    Ai-je oublié quelque chose lors de la configuration de tomcat/eclipse ???

    ---------EDIT--------

    ça ne marche toujours pas. MLais on vient de faire une découverte interessante.
    Si on passe les parametres en GET ça marche mais pas en POST.

    diable vert

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 291
    Points : 1 059
    Points
    1 059
    Par défaut
    Avec un request.setCharacterEncoding("UTF-8"); ça change quelque chose ?
    http://beuss.developpez.com
    Tutoriels PostgreSQL, Assembleur, Eclipse, Java

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Voici quelques pistes au cas où ...

    Vous avez les mêmes variables d'environnement ?
    Windows/Linux en français ? (cf options régionales)

    IE et FF : paramètres d'encoding du navigateur par défaut en français ? (sous FF c'est options, advanced, onglet general et edit language, mettre français en haut de la liste si ce n'est pas déjà le cas)

    Sous ff clic droit et view page info, vérifier que l'encodage et le content-type est bien UTF-8.

    De plus, j'ai eu le cas où quand la page provient du cache disque, elle ressortait en ISO-8859-1 (reglé avec URIEncoding et l'ajout du tag suivant en haut de chaque jsp <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> )

    Bon courage

    EDIT : Quelques liens que j'avais bookmarqué sur le sujet
    http://cagan327.blogspot.com/2006/05...t-jsp-etc.html
    http://java.sun.com/developer/techni...l/HTTPCharset/
    http://weblogs.java.net/blog/joconne...set_traps.html

  7. #7
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Enfin!!!!!

    On peut dire que maintenant le sujet est résolu

    J'ai mis en place le filtre qui permet de définir l'encodage et ça marche plus besoin de mettre le code suivant dans les pages JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String encoding = request.getCharacterEncoding();
    if (encoding == null || !encoding.equalsIgnoreCase("UTF-8")) {
      try {
        request.setCharacterEncoding("UTF-8");
      } catch (Exception e) {
      }
    }
    voir le lien donné ci-dessus pour les explications que je reposte : http://cagan327.blogspot.com/2006/05...t-jsp-etc.html

    Merci à vous

  8. #8
    Membre du Club Avatar de Batou
    Inscrit en
    Mars 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    Hello,

    Merci le code.
    J'ai remplace le "request" par "response", et ca marche aussi chez moi.
    Par contre, le lien de ton blog est mort...
    "It has to start somewhere, It has to start sometime.
    What better place than here, what better time than now?
    " [RATM]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encodage : Conversion UTF-8 vers ISO-8859-?
    Par polo54 dans le forum Général Java
    Réponses: 6
    Dernier message: 26/06/2007, 19h10
  2. Pb encodage en utf-8
    Par spk4ever dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 04/05/2007, 11h59
  3. Réponses: 1
    Dernier message: 24/04/2007, 18h19
  4. Problème d'encodage en UTF-8
    Par navis84 dans le forum Langage
    Réponses: 5
    Dernier message: 29/08/2006, 11h19
  5. [C#] Encodage en UTF et ASCII
    Par Machjaghjolu dans le forum C#
    Réponses: 3
    Dernier message: 11/11/2005, 02h19

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