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

Bibliothèques et frameworks PHP Discussion :

[DOM] Encodage UTF-8 dans fichier XML et PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut [DOM] Encodage UTF-8 dans fichier XML et PHP
    Bonjour,

    J'ai déjà lu plusieurs messages se rapprochant de mon problème mais aucun qui correspond vraiment à ce que je cherche...

    Voilà je dois écrire avec un programme PHP un fichier XML encodé en UTF-8.
    J'ai donc écrit ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $doc = new DOMDocument('1.0','utf-8');
    Puis à chaque fois que j'écris du texte susceptible de contenir des caractères spéciaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($doc->createTextNode(utf8_encode($metadata[0]['TITRE'])));
    Le problème est que quand j'ouvre le fichier xml (avec un éditeur XML)crée les caractères spéciaux apparaissent "normaux" c'est à dire par exemple j'ai des 'é' affichés alors que j'attends des é à la place...

    Comme je n'y connais pas grand chose dans ces problèmes d'encodage je nage un peu et je vois pas trop quoi faire...

    Merci de votre aide!!

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 399
    Points : 15 761
    Points
    15 761
    Par défaut
    Citation Envoyé par norkius
    Le problème est que quand j'ouvre le fichier xml (avec un éditeur XML)crée les caractères spéciaux apparaissent "normaux" c'est à dire par exemple j'ai des 'é' affichés alors que j'attends des é à la place...
    ce n'est pas un problème, le "é" que tu vois est bien en UTF-8 il n'y a pas besoin d'utiliser des entitées
    d'ailleurs le code héxadécimal de "é" c'est "E9" en ISO-8859-1 mais c'est "C3A9" en UTF-8
    regarde là :
    http://fr.wikipedia.org/wiki/Utf-8

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Je croyais également que ça ne posais pas de problème d'avoir un 'é' affiché.

    Seulement la société à qui je dois fournir ce fichier XML se plaint d'avoir des caractères 'Hi-ASCII' (je ne sais d'ailleurs pas ce que ça signifie exactement...) à la place de caractères unicode...

    Ils m'ont fourni un fichier XML exemple où leur 'é' sont codés en &#x000E9 quand je les ouvre avec un éditeur quelconque. C'est la raison pour laquelle j'essaie d'obtenir le même résultat...

    Merci!!

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Citation Envoyé par norkius
    Seulement la société à qui je dois fournir ce fichier XML se plaint d'avoir des caractères 'Hi-ASCII' (je ne sais d'ailleurs pas ce que ça signifie exactement...) à la place de caractères unicode...
    Hi-ASCII, ça ne veut rien dire (ils font peut-être référence aux caractères dans la tranche 128-255)...

    A priori, cette société emploie un logiciel qui n'est pas basé sur un parseur XML standard, sans cela ils n'auraient aucun problème à lire de l'Unicode. Tu n'as plus qu'à leur fournir un fichier en ASCII pur.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    C'est une société américaine peut-être que 'Hi-ASCII' signifie qq chose de particulier chez eux?

    Qu'entendez vous par ASCII pur ?
    Est ce qu'il n'existe aucun moyen simple d'obtenir ce type de code (&#x000E9) à la place de mes caractères 'é' ?

    Merci encore...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    J'en profite pour vous demander si quelqu'un peut m'expliquer à quoi correspond ce type d'encodage ? (&#x000E9)
    Quant on regarde les codes dans les tables de conversion unicode pour un 'é' on trouve plutôt &#233
    Est ce que ces deux codes sont de l'UTF-8 ? Ou puis je trouver une table qui correspond au premier type de code? Peut-on retrpuver à partir de &#233 le code &#x000E9?

    Merci de votre aide car je dois dire que je nage un peu

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Bon j'ai trouvé dans mes connaissances quelqu'un qui m'a vaguement expliqué que ce que souhaite la société ce n'est en fait pas de l'UTF-8 mais l'entité HTML en héxadécimal du code du caractère...
    Bref, j'ai récupéré une fonction qui transforme mais 'é' en '&#233' (je n'ai pas la version en héxadécimal mais c'est déjà un début...)

    Du coup nouveau problème dans le code source de mon fichier XML je me retrouve avec des &#233 autrement dit il semblerait que mon code quelque part transforme systématiquement le & en & alors qu'il est utilisé dans un contexte d'entité!!

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	$doc = new DOMDocument('1.0','utf-8');
    		$doc->formatOutput = true;
    		//racine
    		......
    	 	  $Xarticleid->appendChild($doc->createTextNode(htmlnumericentities(" un accent aigu é puis un astérisque ¤")));
     
     
    	 	$doc->save("test.xml");
    qui me donne un fichier comme ceci :
    <article-id>
    un accent aigu &amp;#233; puis un ast&amp;#233;risque &amp;#164;
    </article-id>
    Alors nouvelle question comment puis-je éviter ça???

    Merci pour tout éclairage car je pète un boulon!!

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Bon je viens de lire que c'est le createTextNode qui est à l'origine de ça...
    L'utilisation de createCDATASection ne pose pas ce problème sauf que ce n'est évidemment pas ce dont j'ai besoin mais ça en aidera peut-être d'autres!!

Discussions similaires

  1. [DOM4J] Encodage des accents dans fichier XML
    Par NizarK dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/10/2008, 14h57
  2. [DOM] Chargement de données dans fichier XML ?
    Par titoc dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 01/06/2008, 12h31
  3. [DOM] Insertion d'élément dans un fichier XML en PHP
    Par marcus13 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/04/2008, 13h51
  4. Encodage UTF-8 dans création de Fichier
    Par lysandra dans le forum Entrée/Sortie
    Réponses: 16
    Dernier message: 28/03/2007, 01h12
  5. [DOM XML] Insertion données dans fichier XML avec PHP pour Flash ?
    Par ExSter dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 10/05/2006, 11h16

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