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 :

Encoder une exception UTF-8 en ISO-8859-1


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 21
    Points
    21
    Par défaut Encoder une exception UTF-8 en ISO-8859-1
    Bonjour à vous,

    Voilà, j'ai une exception que j'ai créé moi-même. Lorsqu'elle est capturée, je l'envoie jusqu'à ma page JSP où je l'affiche ensuite.
    Le problème c'est l'encodage... Soit ça m'affiche du UTF-8 si je ne fais rien, et si j'essaie de convertir en ISO, ça m'affiche des ?? à la place des accents... Comment faire ?

    Voici le code de capture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (checkParam(hwb) == false) {
    			String listError = new String(errorList.getBytes(),"ISO-8859-1");
    		//	String listError = new String(errorList.getBytes("UTF-8"),"ISO-8859-1");
    		//	String listError = new String(errorList.getBytes("UTF-16"),"ISO-8859-1");
    			throw new SurveyConvertXLS2XMLException(listError);
    		}
    Dans ma servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    catch (Exception e) {
    				String error = e.getMessage();
    				response.sendRedirect("../surveys/editSurveysEQE.jsp?error="
    						+ error);
    			}
    Et ma page JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%      
    if (request.getParameter("error") != null
                            && !request.getParameter("error").equals("")) {
                    String errorParam = request.getParameter("error");
                    error="<h1 id=\"tError\">Erreur(s) détectée(s)!</h1>\n"
                            +"<p id=\"pError\">"+ errorParam +"</p>";
     
            }
    %>
    J'ai essayé des conversions un peu partout sans grand succès...

    Merci d'avance !

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Euh... moi si j'étais toi je toucherai pas à l'exception, par contre dans ma jsp je rajouterai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page contentType="text/html; charset=ISO-8859-1"%>
    Au début de ma jsp...
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Hello,

    Oui ça je l'ai déjà c'est bon...

    Merci de la réponse

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Ca veut dire quoi une exception UTF-8 ???

    Sinon c'est quoi ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String listError = new String(errorList.getBytes(),"ISO-8859-1");
    Si errorList est une String alors ce code est complètement faux ! Les string sont toujours encodé en UTF-16 et ce n'est que lors de la lecture/écriture que la conversion est effectuée...


    a++

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Hello,

    Ben en fait exception UTF-8 je voulais dire que je levais une exception et qu'à l'affichage j'obtenais du UTF-8.

    Oui errorList est un String, mais comme je te dis, j'ai essayé dans ma classe où j'ai capturé l'exception de changer l'encodage, comme tu vois là, je l'ai fait dans la servlet, je l'ai fait dans ma page JSP... Je sais plus trop où aller voir...

    Si je ne fais rien, j'obtiens du UTF-8. (si je mets l'encodage du navigateur en UTF-8, ça s'affiche correctement). Dès le moment où je change en ISO, peut importe où, j'ai des ? à la place de mes accents.

    Merci

    Alan

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Il suffit de spécifier l'encodage de ta page de sortie, et de ne surtout jamais faire quelque chose dans ce genre là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String listError = new String(errorList.getBytes(),"ISO-8859-1");
    C'est complètement faux et généralement source de problème.


    Si errorList ne s'affiche pas correctement, cela signifie qu'il est mal construit à l'origine...

    D'où tu récupères le texte de errorList ?

    a++

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    errorList est un simple String que je remplis et que je revoie...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class ConvertXLS2XML {
    	// static variables
    	static String errorList = "";
     
         ...
     
    if (!hwb.getSheetName(0).equals("BRANQUAL")) {
    			errorList = errorList
    					+ "Veuillez vérifier que le nom de la 1ère feuille est BRANQUAL<br/>";
    			ok = false;
    		}
     
    ...

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Brunettia Voir le message
    errorList est un simple String que je remplis et que je revoie...
    Donc ta chaine est correct : le problème ne vient pas de là.


    Si tu déclares bien la page en ISO-8859-1 dans ta JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page contentType="text/html; charset=ISO-8859-1"%>
    Alors il reste à vérifier que la page soit bien déclaré en ISO-8859-1 auprès du navigateur : avec Firefox c'est dans le menu Outils->Information sur la page.

    Sinon il faudra modifier tes entêtes HTTPs et tes meta pour indiquer au navigateur qu'il s'agit bien d'ISO-8859-1 !


    a++

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Ce qui est déjà fait, tout m'indique du ISO, c'est pour ça que j'ai voulu forcer le String en ISO... !


    Merci de l'aide

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Brunettia Voir le message
    Ce qui est déjà fait, tout m'indique du ISO,
    Alors cela devrait marcher !
    On pourrait voir comment tu affiches errorList dans ta page ?

    Citation Envoyé par Brunettia Voir le message
    c'est pour ça que j'ai voulu forcer le String en ISO... !
    Mais ca ne fait pas du tout cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new String(errorList.getBytes(),"ISO-8859-1")
    Tu transformes errorList en bytes avec l'encodage par défaut (qui est rarement ISO-8859-1), que tu interprètes ensuite comme de l'ISO (alors que ca n'en est pas), ce qui donne un résultat complètement incorrect.

    a++

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    L'affichage je le fais comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%      
    if (request.getParameter("error") != null
                            && !request.getParameter("error").equals("")) {
                    String errorParam = request.getParameter("error");
                    error="<h1 id=\"tError\">Erreur(s) détectée(s)!</h1>\n"
                            +"<p id=\"pError\">"+ errorParam +"</p>";
     
            }
    %>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="errorPage">
    <%=error %>
    Merci

  12. #12
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Heu... errorParam c'est errorList ?
    C'est normal qu'il soit passé en paramètre ???

    ce serait mieux d'utiliser les attributs de la request pour le passer...

    a++

  13. #13
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Depuis ma servlet comment je peux transmettre mon errorList à part avec la response ??

  14. #14
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    request.setAttribute() puis request.getAttribute()


    a++

  15. #15
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Bon j'ai testé avec l' Attribute mais j'arrive pas... Mais bon ça change pas tant mon problème!


    Merci en tout cas

Discussions similaires

  1. XML et Encoding : Passez de l'UTF-8 à l'ISO-8859-1
    Par aurell dans le forum Windows Forms
    Réponses: 10
    Dernier message: 11/12/2009, 16h25
  2. Convertir une chaine UTF-8 en ISO-8859-1
    Par gargantua dans le forum Général Java
    Réponses: 4
    Dernier message: 31/03/2009, 15h48
  3. UTF-8 to ISO-8859-1
    Par iso9mix dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 04/01/2008, 13h38
  4. 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
  5. encodage UTF-8 vers ISO-8859-1
    Par taouja dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 13/04/2007, 11h03

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