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 :

Validation UTF-8 d'un document XML


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut Validation UTF-8 d'un document XML
    Bonjour,

    Une petite question que je me pose.

    J'ai actuellement un programme qui lit un fichier en entrée. Ce fichier possède une certaine structure (header d'informations, puis de la donnée XML). Ce fichier est encodé en EBCDIC (Cp500).

    Mon programme lit donc le fichier sous forme de byte array, converti l'EBCDIC en ASCII afin de pouvoir lire / traiter les informations du header (et aussi reconvertir la donnée XML au format d'origine, avant qu'elle ai été encodée en EBCDIC au même titre que le header de mon fichier)

    Ensuite vient plusieurs traitement sur le header, et je fini par copier ma donnée XML dans un fichier en sortie (avec un header spécifiant que l'encodage du fichier est de l'UTF-8, même si ce n'est pas ce header en lui-même qui définit réellement l'encodage mais constitue plus une simple information)

    La donnée XML est donc lue sous forme de byte array, puis gérée en interne en UTF-16 (sous forme de String après convertion EBCDIC->ASCII) par Java, puis écrite en sortie dans un fichier XML via un OutputStream et la méthode 'getBytes' sur ma String.

    A priori, la donnée XML dans mon fichier de sortie devrait donc être la même que la donnée XML que j'ai en base. (si ce n'est pas le cas il faut m'en faire part ^^)

    Ma question est la suivante, si je valide mon fichier XML de sortie par un parseur Java de type SAX, est ce que ce parseur sera capable d'émettre une erreur si la donnée n'est pas UTF-8 ?

    Je pose cette question car j'aimerai - si c'est possible - dans mon process, certifier que la donnée en sortie est bien de l'UTF-8, mais je ne vois pas comme cela peut être possible... :s

    En vous remerciant pour votre aide.

  2. #2
    Membre chevronné Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Par défaut
    Tu auras une erreur si ton parseur n'arrive pas a convertir tes données en UTF-8 mais il se peut qu'il y arrive en te transformant certains caractères par d'autres.

    Si a chaque étape tu t'assures que tu utilise le bon encodage, il n'y a pas de raison d'avoir de problème.
    Vu les questions que tu te poses, tu as de grande chances de déjouer les différents problèmes que tu peux rencontrer. Pour être sur, il faut que tu créer des tests unitaires qui valide chaque étape (dans le cas nominal et avec des encodages inattendus)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Exact, c'est vrai que je pourrai mettre une batterie de test avec quelques samples dont l'encodage n'est pas de l'UTF-8 dans le but de tester (et ne serais-ce que répondre à ma question par rapport aux résultats obtenus)

    La seule chose que je crains en fait, c'est que la donnée qui soit donnée en entrée (ce n'est pas moi qui ai le contrôle dessus, je pense que vous l'avez compris ^^) ne soit pas rigoureusement de l'UTF-8, mais parfois un encoding proche sur une donnée XML "suffisante" pour que ça passe en tant qu'UTF-8 (les charsets & block tables étant ce qu'ils sont, certains proche des autres à quelques caractères près)

    Merci pour la réponse qui me conforte dans mon choix de garder le programme en l'état actuel

  4. #4
    Membre chevronné Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Par défaut
    Je suis régulièrement confronté a ce genre de problème.

    Je ne connais pas de recette magique. Je me contente de dire que je garanti le résultat si l'encodage en entrée est respecté et que dans les autres rien n'est garantie.

    En réalité, si il n'y a pas de caractère trop exotique (caractère accentué) ca passe assez bien. La plupart du temps les données ne sont pas trop critique (souvent pour de l'affichage) et donc s'il y a des problèmes d'encodage ca ne gène pas grand monde (c'est juste que c'est pas beau)

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/04/2008, 18h19
  2. Validation d'un document XML avant sa création??
    Par mardona dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 27/01/2006, 15h33
  3. Valider un document XML en C++
    Par happynoff dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 10/10/2005, 17h09
  4. Réponses: 12
    Dernier message: 19/05/2005, 14h29
  5. Validation d'un document XML / DTD
    Par chris_tal1 dans le forum Valider
    Réponses: 2
    Dernier message: 16/07/2004, 15h19

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