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] XML, ISO et accents


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut [DOM] XML, ISO et accents
    Bonjour,

    J'ai sur mon site un flux RSS pour les derniers articles. Voilà le problème : je suis en iso-8859-1 et j'ai encodé mes accents. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="iso-8859-1"?>
    <rss version="2.0">
    <channel>
    <title>Mon-site.com</title>
    <link>http://www.mon-site.com</link>
    <description>Description accentu&eacute;e</description>
    L'encodage du é en &eacute; génère des erreurs du flux RSS. Or si je remet le "é", il s'affiche en "?". Je souhaiterais conserver cet encodage, mais je n'arrive pas à afficher correctement ces accents, en visant aussi la validation du flux (http://feedvalidator.org dans un second temps).

    Merci 'avance pour votre aide !

    Jarodd

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Ce sont des entités HTML qui ne sont pas valables en XML sans les redéfinir. Quel est le code associé ? Les extensions basées sur libxml2 (DOM, DOMXML et SimpleXML par exemple) utilisent en interne un encodage UTF-8 par défaut, donc il ne faut pas oublier de les décoder (utf8_decode) lors d'une lecture et de les encoder (utf8_encode) pour une écriture.

  3. #3
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Ouhla j'ai pas compris grand-chose

    En gros je dois faire quoi, passer mon flux en UFT-8 ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par Jarodd
    En gros je dois faire quoi, passer mon flux en UFT-8 ?
    Non pas nécessairement mais je ne puis vous répondre car vous n'êtes pas assez précis : on ne sait pas quel encodage vous utilisez ni la manière dont vous exploitez, avec PHP, ce "flux".

    Oui les entités HTML (&eacute; par exemple) ne sont reconnues que par le langage HTML. Si vous souhaitez en faire usage en XML il vous faut les redéfinir mais vous ne devriez pas en avoir besoin dans la mesure où les encodages les "utilisant" gère déjà de tels caractères (ISO-8859-1 comme UTF-8, entre autres).

  5. #5
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Ok je vais essayer de préciser.

    J'ai une page php qui gère l'extraction des données et qui génère ensuite le flux RSS (et redirige à la fin vers la page .xml, avec toutes les données).

    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
    19
    20
    21
    22
    23
    <?php
    $xml = '<?xml version="1.0" encoding="iso-8859-1"?>';
    $xml = '<rss version="2.0">';
    $xml .= '<channel>'; 
    $xml .= '<title>Mon-site.com</title>';
    $xml .= '<link>http://www.mon-site.com</link>';
    $xml .= '<description>Description accentu&eacute;e</description>';
     
    // connexion à la bdd + requêtes d'extraction
    /* ... */
     
    $xml .= '</channel>';
    $xml .= '</rss>';
     
    // écriture dans le fichier xml, notamment <description>. 
    $fp = fopen("mon_fichier.xml", 'w+');
    fputs($fp, $xml);
    fclose($fp);
    @mysql_close();
     
    header("Location: ./ma_page.xml");
     
    ?>
    Je n'ai pas de problème avec les accents du contenu de la bdd (ça rejoint ce que tu dis puisque les accents sont alors en HTML. Là où ça coince c'est sur les balises xml, mais s'il faut les redéfinir, je ne sais pas comment. J'espère que c'est plus clair ?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par Jarodd
    Je n'ai pas de problème avec les accents du contenu de la bdd (ça rejoint ce que tu dis puisque les accents sont alors en HTML.
    C'est inutile puisque comme on peut le voir ça limite tout de suite la réutilisation de vos données ...

    Vous ne nous avez pas donné l'encodage utilisé par votre base (et connexion) mais si c'est de l'UTF-8, il faut faire un utf8_decode avant d'ajouter vos données à votre flux. Sinon ça ne posera pas de problème. Et pour convertir les entités HTML en caractères "normaux", vous pouvez normalement y arriver avec la fonction html_entity_decode (ça sera plus simple et plus lisible).

Discussions similaires

  1. [DOM] DOM xml firefox et ie
    Par topolino dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 11/01/2006, 22h12
  2. [DOM + XML] Lire la structure d'un objet responseXML
    Par zefrit dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/09/2005, 08h35
  3. [XML] encodage des accents
    Par matonfire dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 05/05/2004, 15h48

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