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 :

Différence encodage Win / Unix pour XML


Sujet :

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

  1. #1
    kij
    kij est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Points : 157
    Points
    157
    Par défaut Différence encodage Win / Unix pour XML
    Bonjour,

    J'ai un petit problème en ce moment avec le parsing d'un fichier xml.
    En effet j'essai de valider un fichier xml créé par un programme à l'aide de son fichier xsd.
    Lorsque mon programme de validation tourne sous window je n'ai aucun problème, par contre lorsqu'il tourne sous unix j'ai l'erreur suivante :

    Content is not allowed in prolog.
    Je sais que généralement ce genre d'erreur est provoqué par l'écriture du BOM en début de fichier, et java n'aime pas trop ca... alors j'ai voulu comparer les fichier XML créé sous window et sous unix, et voici la différence :

    Sous window, chaque retour à la ligne est codé de la facon suivante (en hexa) :
    OA
    - ce qui correspond donc à un caractère.
    Par contre sous Unix, chaque retour à la ligne est codé comme suit :
    ODOA
    - ce qui correspond à deux caractère. Je suspect le premier de ces deux caractères (OD) d'être le (ou un espèce) de BOM qui ferait planté ma validation, est ce que quelqun qui s'y connait mieux qui moi peut confirmer cette hypothèse (ou non) ?

    Et si c'est réellement le cas, comment se fait-il que mon fichier ne soit pas codé de la même manière sous window que sous unix, et comment faire pour règler ce problème ?

    Voici le bout de code qui écrit les données du fichier xml :
    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
     
    public void write(StringBuffer theBuffer) {
     
    	try
    	{
    		// --- Write string in UTF-8 encoding
    		getWriter().write(theBuffer.toString().getBytes());
     
    		// --- Update file size
    		setSize(getSize()+theBuffer.length());
     
    	} 
    	catch (IOException ioe) 
    	{
    		logger.error("[write] "+ioe.getMessage());
    	} 
     
    	}
    Merci d'avance à tous ceux qui voudront bien m'aider

  2. #2
    kij
    kij est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Points : 157
    Points
    157
    Par défaut
    Re,

    Alors depuis j'ai transféré sous unix via FTP un fichier xml créé sous window, puis passé la validation dessus, et là ! Plus d'erreur de validation, ca c'est cool.

    Le problème vient donc bien de ces caractères 'OD' présent à chaque retour à la ligne, et ma question reste donc la même, comment supprimer ce caractère sous UNIX ?

  3. #3
    kij
    kij est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Points : 157
    Points
    157
    Par défaut
    Re,

    J'ai trouvé la solution. Ca vient de mon code, plutot que d'utiliser la méthode wirte(byte[] ...) en lui passant une String convertie en tableau de byte, j'ai utilisé la méthode writeBytes(String ...) et effectivement la convertion passe beaucoup mieux sous Unix.

    Mon fichier xml est correctement écrit et la validation n'est plus induite en erreur à cause du caractère 'OD'.

    Nouveau code de la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	//getWriter().write(theBuffer.toString().getBytes());
    	getWriter().writeBytes(theBuffer.toString());

    Merci à vous.

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

Discussions similaires

  1. Encodage caractères spéciaux pour XML
    Par danathane dans le forum Modules
    Réponses: 1
    Dernier message: 24/02/2010, 11h10
  2. Différence de comportement entre SE (win/Unix)
    Par freestyler dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 14/09/2008, 12h17
  3. Lancer des shell unix pour creation d'objet ORACLE
    Par sygale dans le forum Administration
    Réponses: 6
    Dernier message: 27/10/2004, 18h03
  4. [xml editeur ] quel plugin pour xml?
    Par champion dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/08/2004, 09h52

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