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

Services Web Java Discussion :

Problème de conversion caractères bean/xml - xml/bean


Sujet :

Services Web Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème de conversion caractères bean/xml - xml/bean
    Bonjour bonjour,

    Je travaille sur un énorme projet contenant énormément de web service.
    Ces web services utilisent les librairies Apache Axis 1.3.

    Chaque web service n'a en paramètre de méthode que des chaines ou des types génériques. Lorsqu'une méthode doit passer en paramètre des objets, ils sont transformés en données XML par l'intermédiaire de la classe java.beans.XMLEncoder, le service web est appelé avec la chaine de caracteres contenant l'objet transformé en XML, puis coté serveur, la chaine de caracteres est retransformée en objet initial grace à la classe java.beans.XMLDecoder. Ces deux objets ont un encodage de type "utf-8".

    Le problème que je rencontre, c'est lorsque les services web sont utilisés pour envoyer des chaines contenant des caractères spéciaux (le projet est international). L'encodage se fait mais le décodage ne se fait pas :
    java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.


    Voici la chaine que j'utilise pour faire planter mon service web :
    äþÞØ×Ð õðæÝ„~°¶»¼öñ÷ÿß
    Et ce sont précisément les caractères Ð et Ý qui plantent le tout. Ces caractères qui sont répertoriés dans "utf-8".

    Merci par avance pour votre aide


    Pilou

  2. #2
    Membre régulier
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 102
    Points
    102
    Par défaut
    je ponce que le problème dans la bibliothèque de code utf-8.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse, mais il est vrai que j'ai pas mal fouillé de ce côté la.

    Je vais vous donner ce que j'ai trouvé. Voici comment est fait le XML :

    OutputStream out = new ByteArrayOutputStream();
    XMLEncoder e = new XMLEncoder(out);
    e.writeObject(monObjet);
    e.close();
    String monObjetEnXML = out.toString();

    J'ai créé un objet contenant 3 chaines de caractères et l'une d'entre elle est initialisée avec la suite de caractères donnée dans mon 1er message.
    Lorsque j'affiche monObjetEnXML, ça donne ceci :

    <?xml version="1.0" encoding="UTF-8"?>
    <java version="1.4.2_04" class="java.beans.XMLDecoder">
    <object class="test.Test">
    <void property="str1">
    <string>123456</string>
    </void>
    <void property="str2">
    <string>äþÞØ×�õðæ�„~°¶»¼öñ÷ÿß</string>
    </void>
    <void property="str3">
    <string>987654</string>
    </void>
    </object>
    </java>


    Lorsque je modifie mon code, pour m'assurer que mon xml est bien en utf-8, en faisant ceci :

    String monObjetEnXML = ((ByteArrayOutputStream)out).toString("utf-8");


    Lorsque j'affiche monObjetEnXML, ça donne ça :

    <?xml version="1.0" encoding="UTF-8"?>
    <java version="1.4.2_04" class="java.beans.XMLDecoder">
    <object class="test.Test">
    <void property="str1">
    <string>123456</string>
    </void>
    <void property="str2">
    <string>äþÞØ×ÐõðæÝ„~°¶»¼öñ÷ÿß</string>
    </void>
    <void property="str3">
    <string>987654</string>
    </void>
    </object>
    </java>

    Donc on dirait que le code XML généré n'est pas en UTF-8 bien qu'il devrait l'etre.
    Si je n'ai pas de chaine de caractères pourrie par des caractères étranges, la 1ère méthode fonctionne et pas la 2ème.

    Enfin voila, j'suis trop dans le flou

    Et j'espère que qqn a déjà été confronté a ça pour m'aider.

    Bye bye

    Pilou

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Et j'oubliais, les transferts de données et l'encodage d'objet vers XML se passent toujours nickel, mais c'est le décodage du XML en objet qui me fait des erreurs

    Bye

Discussions similaires

  1. Problème de conversion caractère vers Ascii
    Par Lastagette dans le forum VB.NET
    Réponses: 4
    Dernier message: 29/08/2012, 17h29
  2. Problème ObjectProperty "Conversion d'un fichier xml en owl"
    Par menoulette dans le forum Web sémantique
    Réponses: 4
    Dernier message: 18/06/2012, 19h08
  3. XML et beans et JSP
    Par fatenatwork dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 27/09/2007, 15h25
  4. [XML] problème d'encodage caractère €
    Par #CR-7 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 11/01/2007, 10h45
  5. [FOP] Problème de conversion xml/xsl vers pdf
    Par Shadow aok dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/03/2006, 10h41

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