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 :

[JAXP] Parsing XML avec encodage UTF-8


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 44
    Par défaut [JAXP] Parsing XML avec encodage UTF-8
    Bonjour,

    J'ai vu que les problèmes d'encodage sont assez récurrents avec les manipulations de flux XML, pour preuve le nombre de discussions sur ce forum.

    Je viens enrichir le sujet avec un nouveau cas... :

    - J'ai une application nommée "A" qui dialogue avec une application nommée "B".

    - A envoie à B un flux XML encodé en UTF-8 et avec un prologue indiquant un encodage UTF-8.

    - B est appellé au travers d'une servlet donc ici B reçoit le flux XML et tente de le paser de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public void doPost(HttpServletRequest request, HttpServletResponse response) {
     
    		try {
     
    			DocumentBuilderFactory builder = DocumentBuilderFactory.newInstance();
    			DocumentBuilder docBuilder = builder.newDocumentBuilder();
    			Document document = docBuilder.parse(request.getInputStream());
     
    			...
    - Lors du parsing, B plante avec une erreur

    J'ai remarqué qu'en modifiant le prologue en UTF-16, je n'ai plus l'erreur.

    Le truc, c'est que je ne peux pas me permettre de modifier le prologue (impacts trop lourds sur l'application A qui contient beaucoup d'appels à B, appels en non centralisés).

    Selon moi, le parser plante car le prologue indique UTF-8 alors que le flux XML arrive en UTF-16 (en non UTF-8 comme je le pense). Pourtant, je suis certain d'envoyer en UTF-8 car si je modifie mon fichier de config pour envoyer en ISO-8859-1 tout en laissant le prologue en UTF-16 par exemple, le parser replante.

    J'ai essayé différentes "bidouilles" pour reconvertir à la volée en UTF-8 mais sans succès. Je dis "bidouilles" car je ne trouve pas ça très normal de devoir retoucher un flux qui devrait avoir conservé son encodage original.

    Sur le forum, les problèmes d'encodage remontées concernaient soit la lecture d'un fichier XML, soit l'envoi d'une réponse XML. Mon cas est la lecture via getInputStream d'un flux HTTP entrant.

    Existe-t-il un moyen de connaître le format d'encodage du flux arrivant en inputstream ? J'ai bien vu "request.getCharacterEncoding()" mais ça me dit toujours UTF-16...

    Qu'est-ce que vous pouvez me conseiller au niveau de B (code ci-dessus) sachant que je souhaite uniquement manipuler de l'UTF-8 ?

    Merci de votre aide.

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Hello,

    Il y a ce genre de prob avec le parseur SAX par exemple...

    J'ai résolu en lisant sur un Reader modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FileInputStream fis = new FileInputStream(f);
    InputStreamReader r = new InputStreamReader(fis, "UTF-8");
    Ce qui force la lecture en UTF-8.

    Si je donne le File en input directement ça ne fonctionne pas... J'espère que cette solution te sera utile.

Discussions similaires

  1. [XML] PARSE XML avec multi donnée pour un item ?
    Par gandolfi dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 15/03/2007, 14h58
  2. [SAX] Recuperer le resultat d"un parsing XML avec SAX
    Par chouxe dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/12/2006, 15h48
  3. Problème d'affichage avec encodage utf-8
    Par t-die dans le forum Zend
    Réponses: 3
    Dernier message: 04/12/2006, 14h55
  4. [SAX] Erreur de parsing XML avec SAX
    Par philobedo dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 02/08/2006, 13h49
  5. [JSP] Parsing XML avec JDOM
    Par benben13 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 26/08/2005, 17h19

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