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

Format d'échange (XML, JSON...) Java Discussion :

Comment utiliser UTF-8 [XStream]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut Comment utiliser UTF-8
    Bonjour

    j'utilise XStrean pour sérialiser un JavaBean qui comporte dans ses attributs un texte de la forme référence : mais aprés sérialisation les caractères é ne sont pas pris en compte ils sont remplacés par

    <refarticle>référence</refarticle>

    ma page JSP comportant le formulaire de saisie est codée en UTF-8

    Comment faire pour avoir les caractères accentués dans le fichier XML ?

    Merci de bien vouloir m'aider.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Le problème est ailleurs, XStream gère très bien tout ça.

    Voici grosso-modo deux possibilités :

    - #1 : Le fichier XML que tu obtiens est parfaitement correct, mais toi tu ne sais pas l'ouvrir. Il est en UTF-8 et tu l'ouvres comme s'il était en latin-1, ce qui produit l'affichage que tu indiques.

    Pour qu'on vérifie, il faudrait que tu nous attaches le fichier produit sur le forum, pour qu'on l'ouvre nous-même. Bien sûr ça ne sert à rien de le copier-coller, il nous faut le fichier, pas son contenu.

    - #2 : Il y a bien un problème, mais ce n'est pas XStream qui se trompe dans les accents, c'est ton programme qui envoie référence à XStream.

    Par exemple, en réponse à ta JSP, le formulaire est bien envoyé en UTF-8, mais toi tu lis les valeurs comme si elles étaient en latin-1.

    Pour vérifier, écris les valeurs de ton formulaire dans un fichier texte, en UTF-8, en utilisant un OutputStreamWriter. Et attache-nous le résultat si tu ne sais pas comment l'ouvrir.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut
    Bonjour
    je n'ai pas exposé le PB correctement
    voila je travaille sous eclispe indigo ( paramétré UTF-8) et j'apprend a créer un site Web
    Pour cette manip j'ai une page JSP encodée en UTF-8 qui posséde un formulaire de saisie d'un article ( Nom, référence,prix,acteur1,acteur2)
    Le bouton envoyer de ce formumaire appel une servlet ServletArticle.java dont voiçi une partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    try{
    // inserer toutes les données dans le bean en une seule étape
    BeanUtils.populate(article, map);
    try {
    	// Instanciation de la classe XStrean
    	XStream xstream = new XStream(new DomDriver());
    	// conversion du contenu de l'objet article en XML
    	String xml = xstream.toXML(article);
    	// affichage de la conversion
    	System.out.println("XML :"+xml);
     
    	}
    pour l'instant je me contente d'afficher dans la console système le résultat

    Pour une saisie comportant :

    Nom :l'homme de l'ombre
    référence :référence
    Prix :12.00
    Acteur1 :malkowitch
    Acteur2 :easwood

    Voiçi le résulta affiché
    XML :<beans.Article>
    <nomarticle>l&apos;homme de l&apos;ombre</nomarticle>
    <refarticle>Référence</refarticle>
    <prixarticle>12.0</prixarticle>
    <acteurs>
    <string>easwood</string>
    <string>malkowitch</string>
    </acteurs>
    </beans.Article>
    les caractères accentués de référence ne sont pas correctement écrits
    J'espère que ce petit bout de code vous permettra de m'aider
    Merçi

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    La console n'est pas une information fiable. Écris plutôt dans un fichier en UTF-8. Puis ouvre-le en UTF-8.
    Et tant qu'à faire, ne passe pas par XStream pour faire ce test, comme ça on saura qu'il intervient pas.

    S'il n'y a pas de problème => C'est juste un petit soucis d'encodage de la console. C'est pas grave, de toute façon tu vas pas t'en servir.
    S'il y a un problème => Au moins, on va pouvoir voir exactement lequel.

    Rappel : tout cela est le cas #2 que j'ai décrit dans mon message précédent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut
    Bonjour
    j'ai modifié la Servlet ServletArticle.java comme ceci pour enregistrer dans un fichier que je poste en fichier attaché
    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
     
    // Instanciation de la classe XStrean
    XStream xstream = new XStream(new DomDriver());
    // conversion du contenu de l'objet article en XML
    String xml = xstream.toXML(article);
    // affichage de la conversion
    System.out.println("XML :"+xml);
     
    File fichier = new File("D:\\article1.xml");
    FileOutputStream fos = new FileOutputStream(fichier);
    try {
    	xstream.toXML(article, fos);
    }finally{
    	fos.close();
    }
    voir le fichier en piéce jointe
    Fichiers attachés Fichiers attachés

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En effet, ce fichier a bien une erreur. On est pas dans le cas #1.



    Il semble que les paramètres envoyés par le formulaire soient mal lus. Cas #2, donc.
    Pour vérifier, il faudrait que tu écrives ces paramètres (ceux qui contiennent des accents) dans un fichier texte en utf-8.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut
    Bonjour

    Effectivement on se trouve bien dans la cas #2 les paramètres ne sont pas lus en UTF-8 ( avec une sortie sur la console avant la sérialisation)

    J'ai trouvé la solution !!!!!

    Dans la servlet qui reçoit ces paramètres avant de les lire il faut placer l'instruction suivante :

    request.setCharacterEncoding("UTF-8");

    et avec cela ça fonctionne

    Merci en core de m'avoir aider a résoudre ce PB

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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