Pb flux RSS et encodage

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par SWCF, 15 Avril 2010.

  1. SWCF
    SWCF WRInaute occasionnel
    Inscrit:
    28 Janvier 2010
    Messages:
    260
    J'aime reçus:
    0
    Bonsoir,

    j'ai un problème avec l'encodage de mon flux Rss
    http://www.good-luck-ecommerce.fr/flux.xml

    Les tables de ma bdd est en utf general ci. Et le site n'a pas de problème que le flux. Si vous avez des idées.


    ps : est-il possible de mettre sur un même flux des infos de différentes tables.
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Sans savoir ce que tu utilises pour générer le flux, difficile de te dire où est le problème, mais ça a l'air assez sauvage. Je dirais que tu fais une conversion en ISO à un moment donné, et qu'ensuite tu le donnes à un bout de code (qui contient un htmlentities ou équivalent) qui veut de l'UTF-8 (et qui ne vérifie que dalle).

    Jacques.
     
  3. webinyou
    webinyou WRInaute discret
    Inscrit:
    10 Avril 2010
    Messages:
    125
    J'aime reçus:
    0
    Ouvre ton fichier "flux.xml" avec un éditeur de code, puis vérifie :
    - si le fichier est encodé en UTF-8
    - si dans la source, il y a bien encoding="UTF-8" dans la balise "xml"
     
  4. SWCF
    SWCF WRInaute occasionnel
    Inscrit:
    28 Janvier 2010
    Messages:
    260
    J'aime reçus:
    0
    il y a rien :
    Code:
    <?xml version="1.0"?>
    <rss version="2.0"><channel>
    Mon fichier php qui génère le flux :
    Code:
    <?php
    
    function &init_interview_rss(&$xml_file)
    {
            $root = $xml_file->create_element("rss"); //création de l'element
            $root->set_attribute("version", "2.0"); //on lui ajoute un attribut
            $root = $xml_file->append_child($root); //on l'insère dans le noeud parent (ici root qui est "rss")
           
            $channel = $xml_file->create_element("channel");
            $channel = $root->append_child($channel);
                   
            $desc = $xml_file->create_element("description");
            $desc = $channel->append_child($desc);
            $text_desc = $xml_file->create_text_node("Good Luck Ecommerce. Conseils pour e-commercant. Astuce e-commerce"); //on insère du texte entre les balies <description></description>
            $text_desc = $desc->append_child($text_desc);
           
            $link = $xml_file->create_element("link");
            $link = $channel->append_child($link);
            $text_link = $xml_file->create_text_node("http://www.good-luck-ecommerce.fr");
            $text_link = $link->append_child($text_link);
           
            $title = $xml_file->create_element("title");
            $title = $channel->append_child($title);
            $text_title = $xml_file->create_text_node("Good Luck Ecommerce. Conseils e-commerce");
            $text_title = $title->append_child($text_title);
           
            return $channel;
    }
     
    function add_interview_node(&$parent, $root, $id, $titre, $titreweb, $descriptif)
    {
            $item = $parent->create_element("item");
            $item = $root->append_child($item);
           
            $title = $parent->create_element("title");
            $title = $item->append_child($title);
            $text_title = $parent->create_text_node($titre);
            $text_title = $title->append_child($text_title);
           
            $link = $parent->create_element("link");
            $link = $item->append_child($link);
            $text_link = $parent->create_text_node("http://www.good-luck-ecommerce.fr/interviews/interview-".$titreweb.".php");
            $text_link = $link->append_child($text_link);
           
            $desc = $parent->create_element("description");
            $desc = $item->append_child($desc);
            $text_desc = $parent->create_text_node($descriptif);
            $text_desc = $desc->append_child($text_desc);
                 
            $author = $parent->create_element("author");
            $author = $item->append_child($author);
            $text_author = $parent->create_text_node("Good Luck Ecommerce");
            $text_author = $author->append_child($text_author);
           
            $pubdate = $parent->create_element("pubDate");
            $pubdate = $item->append_child($pubdate);
            $text_date = $parent->create_text_node($dateinterview);
            $text_date = $pubdate->append_child($text_date);
           
            $guid = $parent->create_element("guid");
            $guid = $item->append_child($guid);
            $text_guid = $parent->create_text_node("http://www.good-luck-ecommerce.fr/interviews/interview.php?page=".$titreweb."");
            $text_guid = $guid->append_child($text_guid);
           
            $src = $parent->create_element("source");
            $src = $item->append_child($src);
            $text_src = $parent->create_text_node("http://www.good-luck-ecommerce.fr");
            $text_src = $src->append_child($text_src);
    }
    
     
    function rebuild_rss()
    {
            //On se connecte à la BDD
    mysql_connect(XXXXXXXXXXXXXXXXXXX);
    mysql_select_db("FFFFFFFFFFFFFFFFFFFFFF");
     
            //On récupère les interview
            $nws = mysql_query("SELECT id, titre, titreweb, descriptif FROM interview ORDER BY id DESC")  or die(mysql_error());
    
     
            //On crée le fichier XML
    $xml_file = domxml_new_doc("1.0");
    
            //On initialise le fichier XML pour le flux RSS
            $channel = init_interview_rss($xml_file);
     
            //On ajoute chaque interview au fichier RSS
            while($interview = mysql_fetch_assoc($nws))
            {
                    add_interview_node($xml_file, $channel, $interview["id"], $interview["titre"], $interview["titreweb"], $interview["descriptif"], $interview["dateinterview"]);
            }
           
            //On écrit le fichier
    $xml_file->dump_file("flux.xml");
    }
    ?>
    
    <?php
    rebuild_rss();
    ?>
     
  5. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Tu es sûr que ta base est bien en UTF-8 et la connexion à ta base aussi? Mon petit doigt me dit que ce n'est pas le cas, et que ta base est en ISO-8859-1, et c'est donc normal que ça déconne, les fonction domxml veulent de l'UTF-8.

    Ajoute un utf8_encode() autour des champs que tu récupères de ta BDD avant de les passer à add_inverview_node, ça devrait beaucoup mieux fonctionner.

    Jacques.
     
  6. SWCF
    SWCF WRInaute occasionnel
    Inscrit:
    28 Janvier 2010
    Messages:
    260
    J'aime reçus:
    0
    Je ne suis sûr de rien.

    Phpmyadmin me dit : interclassement connexion mysql utf8 general ci.
    Les tables utf8
    Les pages de mon site sont en iso (ça marche bien)


    D'après ce que j'ai compris de ce que tu me dis, j'ai fais ça :
    Ca change pas. :?
    C'était ce que tu me disais où j'ai mal compris ?
     
  7. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Euh non, tu modifies:
    add_interview_node($xml_file, $channel, $interview["id"], $interview["titre"], $interview["titreweb"], $interview["descriptif"], $interview["dateinterview"]);

    et tu le remplaces par:
    add_interview_node($xml_file, $channel, $interview["id"], utf8_encode($interview["titre"]), $interview["titreweb"], utf8_encode($interview["descriptif"]), $interview["dateinterview"]);

    Jacques.
     
  8. webinyou
    webinyou WRInaute discret
    Inscrit:
    10 Avril 2010
    Messages:
    125
    J'aime reçus:
    0
    1. Renomme
    Code:
    <?xml version="1.0"?>
    en
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    .

    2. Le fichier "flux.xml" doit être encodé en UTF-8, c'est au niveau de la structure du fichier. Pour cela assure-toi bien qu'avec ton éditeur, tu es bien sur un format UTF-8.
    Par exemple, avec notepad++, va sur le menu "Format/Encoder en UTF-8 (sans BOM)".

    3. La même chose pour le fichier source PHP qui génère le fichier "flux.xml"
     
  9. SWCF
    SWCF WRInaute occasionnel
    Inscrit:
    28 Janvier 2010
    Messages:
    260
    J'aime reçus:
    0
    merci ça fonctionne !

    merci à vous deux.
    Si vous avez une idée pour mettre les flux rss des autres tables (articles et blog) ?
     
  10. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Ben c'est pareil, tu ajoutes des utf8_encode autour des champs qui contiennent du texte avec éventuellement des accents.

    Jacques.
     
  11. SWCF
    SWCF WRInaute occasionnel
    Inscrit:
    28 Janvier 2010
    Messages:
    260
    J'aime reçus:
    0
    euh non

    comment mettre sur 1 même flux 2 tables différentes.
     
  12. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Ce serait probablement plus intelligent de faire des flux RSS séparés, non?

    Sinon tu peux remplacer ton SELECT par un SELECT id,titre,titreweb,descriptif FROM interview UNION SELECT id,titre,titreweb,descriptif FROM articles UNION SELECT id,titre,titreweb,descriptif FROM blog par exemple. Il faut évidemment adapter les noms des champs, et il va falloir:
    - passer des informations différentes pour construire les URLs qui vont bien en conséquence
    - faire un tri global suivant un ordre à déterminer

    Autre possibilité, tu fais le premier select avec la boucle qui fait des add_interview_node, puis un deuxième select avec une boucle qui fait des add_article_node (il faut créer cette fonction qui est comme l'autre à quelques détails près, en particulier l'URL), etc.

    Jacques.
     
  13. SWCF
    SWCF WRInaute occasionnel
    Inscrit:
    28 Janvier 2010
    Messages:
    260
    J'aime reçus:
    0
    Merci JC, tu es un dieu !

    J'ai opté pour ta deuxième solution.
    Pour ceux qui auront le même soucis que moi, voici mon bazar :

     
  14. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Le ut8_encode() autour de chaque mysql_query ça ne sert à rien, et en plus ça doit fausser la détection d'erreur.

    Jacques.
     
  15. SWCF
    SWCF WRInaute occasionnel
    Inscrit:
    28 Janvier 2010
    Messages:
    260
    J'aime reçus:
    0
    ok j'ai viré. Merci.
     
Chargement...
Similar Threads - flux RSS encodage Forum Date
Probléme avec un flux rss Demandes d'avis et de conseils sur vos sites 4 Novembre 2019
Redirection bizarre impactant un flux RSS Netlinking, backlinks, liens et redirections 11 Novembre 2018
Les flux RSS sont-ils toujours indispensables en 2017 ? Développement d'un site Web ou d'une appli mobile 15 Mars 2017
[Wordpress] Existe-t'il plugin pour générer un nouveau flux RSS ? Développement d'un site Web ou d'une appli mobile 27 Décembre 2016
Flux rss : comment récupérer uniquement le 2eme item ? Développement d'un site Web ou d'une appli mobile 3 Juin 2016
Quelle date dans <pubDate> pour flux RSS : création ou dernière modification? Crawl et indexation Google, sitemaps 24 Mai 2016
Les flux rss et le seo Netlinking, backlinks, liens et redirections 10 Mars 2016
Récupération d'un flux RSS Problèmes de référencement spécifiques à vos sites 3 Février 2016
Flux RSS et référencement (sitewide) Netlinking, backlinks, liens et redirections 6 Février 2015
Rediffusion de flux RSS autorisée ? Droit du web (juridique, fiscalité...) 27 Janvier 2015
Utiliser des fluxs rss de citation Droit du web (juridique, fiscalité...) 31 Décembre 2014
Problème de flux RSS Développement d'un site Web ou d'une appli mobile 14 Octobre 2014
Reprise flux RSS sur mon site : légal ? Droit du web (juridique, fiscalité...) 20 Décembre 2013
Flux rss wordpress et SEO Débuter en référencement 13 Décembre 2013
Flux rss Wordpress duplicate? Référencement Google 10 Décembre 2013
Comment mettre un flux RSS sur un prestashop? Débuter en référencement 5 Novembre 2013
Bloc flux RSS Débuter en référencement 4 Septembre 2013
Afficher le flux rss d’un site externe sur une page de mon site Développement d'un site Web ou d'une appli mobile 23 Août 2013
Gagner de trafic on intégrant mon flux rss dans un autre site Débuter en référencement 15 Août 2013
Flux RSS ne marche plus après MAJ wordpress Développement d'un site Web ou d'une appli mobile 11 Avril 2013