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

Windows Forms Discussion :

XML et Encoding : Passez de l'UTF-8 à l'ISO-8859-1


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut XML et Encoding : Passez de l'UTF-8 à l'ISO-8859-1
    Bonjour à tous. J'espère ne pas faire doublon, mais vu que ça fait 2 jours pleins que je parcours la toile, je ne pense pas.

    Mon problème est simple. Je distribue des données, stockées en base, via des flux XML. La base (Postgres) est en UTF-8. Tant que les fichiers que je génère (VB.net framework 2.0) sont en UTF-8, pas de soucis.

    Là où ça se corse, c'est quand je souhaite faire de l'ISO-8859-1. Que ce soit en passant par la classe XmlDocument ou XmlTextWriter, le résultat est le même :

    Les caractères ' € ' sont remplacés par des ' ? ' et j'ai des doubles quotes ' “ ' qui sont remplacées par des doubles quotes standard ' " ' (ceci dans un attribut rend d'ailleurs le XML invalide, elles devraient être remplacées par des &quot).

    Je sais par ailleurs que ' € ' ne fait pas partie du jeu de caractère ISO-8859-1, mais mon parser actuel le transforme en €. Comment faire de même avec .net ? Coment régler le problème des doubles quotes ?

    Merci d'avance pour vos idées, conseils...

    Aurell

  2. #2
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 369
    Points
    2 369
    Par défaut
    J'ai le même problème, sauf que j'exporte en XML depuis SQL Server et je réimporte en VB via LINQ.

    Tu as trouvé une solution pour ton problème ?

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Peut être avec ceci ?

  4. #4
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 369
    Points
    2 369
    Par défaut
    Merci StormimOn,

    mais moi j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim XDoc As XDocument = XDocument.Load("monChemin")
    et on ne peux pas spécifier l'encodage apparemment.

    Mon XML de base est encodé en "iso-8859-1",
    mais lorsque j'affiche les données dans un TreeView à partir de VB, des caractères (carré surtout) remplace les caractères "français", comme par exemple œ=un carré.

    Tu as une idée ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Peut être avec ceci ?
    Non, le résultat est le même. Dans mon cas le '€' ne faisant pas partie du jeu de caractères de destination, il est bêtement remplacé par un '?' et les drôles de doubles quotes...

    Exemple avec le code cité :
    Source UTF-8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <XmlTestRoot>
      <XmlTest texte="“9” connaît alors ... 3 €" />
    </XmlTestRoot>
    Destination ISO-8859-1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="iso-8859-1"?>
    <XmlTestRoot>
      <XmlTest texte=""9" connaît alors ... 3 ?" />
    </XmlTestRoot>
    Vous remarquerez bien qu'avec les doubles quotes, la destination n'est pas valide.

    Aurell

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par alex_vino Voir le message
    Mon XML de base est encodé en "iso-8859-1",
    mais lorsque j'affiche les données dans un TreeView à partir de VB, des caractères (carré surtout) remplace les caractères "français", comme par exemple œ=un carré.
    Le 'œ' ne fait pas partie du jeu de caractères ISO-8859-1. Comment est-il représenté dans ton fichier XML ?

    Aurell

  7. #7
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 369
    Points
    2 369
    Par défaut
    Citation Envoyé par aurell Voir le message
    Le 'œ' ne fait pas partie du jeu de caractères ISO-8859-1. Comment est-il représenté dans ton fichier XML ?

    Aurell
    Pourtant si, regarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="iso-8859-1"?>
    <Bats>
    	<Bat Nom="A">
    		<Disp Nom="Manœuvre">
    			<R Nom="Largeur &gt;= 1,20 m (toléré : &gt;= 1 m)" />
    			<R Nom="Hauteur &lt;= 16 cm (toléré : &lt;= 17 cm)" />
    		</Disp>
    	</Bat>
    </Bats>

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par alex_vino Voir le message
    Pourtant si, regarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="iso-8859-1"?>
    <Bats>
    	<Bat Nom="A">
    		<Disp Nom="Manœuvre">
    			<R Nom="Largeur &gt;= 1,20 m (toléré : &gt;= 1 m)" />
    			<R Nom="Hauteur &lt;= 16 cm (toléré : &lt;= 17 cm)" />
    		</Disp>
    	</Bat>
    </Bats>
    C'est ce que je dis, tu as trouvé l'origine de tes carrés. Ton XML ainsi fait est invalide étant donné que le 'œ' ne fait pas partie du jeu de caractères que tu utilises... Tu as donc 2 solutions :
    - Spécifier l'encoding ISO-8859-15 à ton XML. Attention, il peut tout de même y avoir un effet de bord sur d'autres caractères (cf : ISO-8859-15 sur Wikipedia)
    - Remplacer tes 'œ' par leurs entités unicode ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="iso-8859-1"?>
    <Bats>
    	<Bat Nom="A">
    		<Disp Nom="Manœuvre">
    			<R Nom="Largeur &gt;= 1,20 m (toléré : &gt;= 1 m)" />
    			<R Nom="Hauteur &lt;= 16 cm (toléré : &lt;= 17 cm)" />
    		</Disp>
    	</Bat>
    </Bats>
    Aurell

  9. #9
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 369
    Points
    2 369
    Par défaut
    Citation Envoyé par aurell Voir le message
    - Spécifier l'encoding ISO-8859-15 à ton XML
    J'ai fait de cette façon en modifiant mon document XML original mais malheuresement Visual Studio semble déterminé à me mettre ces malheureux carrés.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par alex_vino Voir le message
    J'ai fait de cette façon en modifiant mon document XML original mais malheuresement Visual Studio semble déterminé à me mettre ces malheureux carrés.
    Hummm... Je viens de faire un test en lecture (j'étais concentré sur l'écriture d'un XML) et effectivement. La solution 1 devrait marcher, mais ne marche pas...
    La solution 2 fonctionne

    Aurell

  11. #11
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 369
    Points
    2 369
    Par défaut
    Citation Envoyé par aurell Voir le message
    La solution 2 fonctionne
    La solution 2 n'est pas tellement envisageable dans mon cas car j'ai énormément de données, et ces données étant générées par SQL Server.

    Si tu a une autre idée je suis preneur, en tout cas je vais essayer de trouver d'autres solution de mon côté.

Discussions similaires

  1. Convertir xml utf-8 en ISO 8859-1
    Par riadh2406 dans le forum ASP
    Réponses: 1
    Dernier message: 16/12/2009, 10h56
  2. Encoder une exception UTF-8 en ISO-8859-1
    Par Brunettia dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 10/06/2008, 11h36
  3. UTF-8 to ISO-8859-1
    Par iso9mix dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 04/01/2008, 13h38
  4. Encodage : Conversion UTF-8 vers ISO-8859-?
    Par polo54 dans le forum Général Java
    Réponses: 6
    Dernier message: 26/06/2007, 19h10
  5. encodage UTF-8 vers ISO-8859-1
    Par taouja dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 13/04/2007, 11h03

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