Encodage RSS

Résolu
Bonjour,

J'ai un petit soucis avec mon flux rss, j'obtiens du texte sous cette forme:

" la baisse de l'euro n'ont été prises. La monnaie unique européenne pâtit également des craintes "

j'utilise ca sur ma page:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="squelette/index.css" />
<link rel="shortcut icon" href="https://www.pagesjaunes.fr/">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

Comment resoudre le probleme?
Configuration: Windows Vista / Internet Explorer 7.0

22 réponses

  1. Modérateur
    un flux rss ne se code pas de cette manière !!! (il y a des normes à respecter !)
    là tu as en train de faire une page ... mal codée en plus !
    1. Pouvez-vous me dire ce qui va pas? Voici le code que j'utilise:

      <div id="my-glider">
      <div class="controls">
      <a href="#article1">1</a> |
      <a href="#article2">2</a> |
      <a href="#article3">3</a> |
      <a href="#article4">4</a>
      </div>
      <div id="glider-arrow-left"><a href="#" onclick="my_glider.previous();return false;"><</a></div>
      <div id="glider-arrow-right"><a href="#" onclick="my_glider.next();return false">></a></div>
      <div class="scroller">
      <div class="content">
      <?php
      $url = 'http://www.lefigaro.fr/rss/figaro_tauxetdevises.xml';

      $dom = new DOMDocument();
      $dom->load($url);

      $i = 1;
      foreach($dom->getElementsByTagName('item') as $item) {
      if($i <= 4) {
      echo "\t\t\t".'<div class="section" id="article'.$i.'">'."\n";
      echo "\t\t\t\t".'<h4>'.trim($item->getElementsByTagName('title')->item(0)->nodeValue).'</h4>'."\n";
      echo "\t\t\t\t".trim($item->getElementsByTagName('description')->item(0)->nodeValue)."\n";
      echo "\t\t\t".'</div>'."\n\n";
      $i++;
      }
      }
      ?>
      </div>
      </div>
      <script type="text/javascript" charset="utf-8">
      var my_glider = new Glider('my-glider', {duration:0.4});
      </script>
      </div>
      1. Comme l'a expliqué avion : un fichier RSS est du xml.
        Ton code est du html, du php et du js.

        Donc, rien ne va...
        1. ok mais je comprends rien.. c'est avion qui m'avait filer ce code.. moi je sais pas programmer..
          1. Tu as du mal comprendre... Avion n'a pas pu te donner ce code pour faire un fil RSS.
            Vas voir le lien qu'il a mentionné plus haut !
        2. je veux pas faire un fil RSS, je veux afficher des articles du journal "Le Figaro" sur mon site grace a leur flux RSS...

          Je viens de trouver la solution a mon probleme, il fallait remplacer

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <link rel="stylesheet" type="text/css" href="squelette/index.css" />
          <link rel="shortcut icon" href="https://www.pagesjaunes.fr/">
          <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

          par

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <link rel="stylesheet" type="text/css" href="squelette/index.css" />
          <link rel="shortcut icon" href="https://www.pagesjaunes.fr/">
          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

          Par contre ca m'affiche uniquement le titre et la description de l'article.. comment faire pour que l'internaute puisse cliquer sur l'article et ca le renvoie directement sur la page de "Le Figaro" ou il peut lire l'article en entier?
          1. En fait je viens de voir que ca resoud le probleme qu'a moitier.. mes articles du Figaro s'affichent bien mais j'ai une autre partie en dessous ou il y a des petits carres a la place des "à"

            Une idee?
            1. Changer la déclaration d'encodage n'est pas suffisant. Il faut aussi régler l'éditeur html.
              Si tu utilises NotePad++, il faut aller dans le menu format pour configurer cela.
              1. ok mais je dois faire quoi? le mettre en UTF-8?? car ca resoudra uniquement le probleme des articles du Figaro que j'integre grace a RSS et pas celui de la partie en dessous avec les petits carres a la place des "à"... et si je mets en ISO-8859-1 ca resoudra le probleme des petits carres a la place des "à" mais pas celui des articles du Figaro...
                1. Je viens de regarder et j'ai ca dans la partie avec les petits carres:

                  <?php
                  $source = file_get_contents('http://www.monsite.fr/forum/extern.php?action=new&show=10&fid=1&type=RSS');
                  $xml = new SimpleXMLElement($source);
                  $i = 0;
                  foreach($xml->channel->item as $new) {
                  if($i < 5) {
                  preg_match_all('#Auteur: (.+)<br />#isU',utf8_decode($new->description),$auteur);
                  $auteur = $auteur[1][0];

                  preg_match_all('#Écrit le: (.+)<br />#isU',utf8_decode($new->description),$date);
                  $date = strtotime($date[1][0]);

                  if(strlen($new->title) > 20)
                  $titre = substr($new->title, 0, 20).'...';
                  else
                  $titre = $new->title;

                  echo date('d/m/y à H:i',$date).' : <a href="'.$new->link.'">'.utf8_decode($titre).'</a> par '.utf8_decode($auteur).'<br />';
                  }
                  $i++;
                  }
                  ?>

                  J'ai deja utf8_decode donc si je mets ma page en UTF-8 comment modifier le code ci-dessus pour qu'il n'y ait plus les petits carres?
                  1. Bouhahahahaha !
                    Le fichier RSS du fig est en iso... pas en utf-8. Première ligne du fichier :
                    <?xml version="1.0" encoding="iso-8859-1"?>


                    Donc, c'est le contraire : faut virer les utf8_decode...
                    1. 1. Je comprends rien... c'est quoi cette histoire de <?xml version="1.0" encoding="iso-8859-1"?> ca sort d'ou? ou tu vois ca, j'ai pas ce truc dans mon code?

                      2. J'ai supprimer les decode et ca marche toujours pas.. ci-dessous mon code.. j'ai toujours les carres.

                      <?php
                      $source = file_get_contents('http://www.monsite.fr/forum/extern.php?action=new&show=10&fid=1&type=RSS');
                      $xml = new SimpleXMLElement($source);
                      $i = 0;
                      foreach($xml->channel->item as $new) {
                      if($i < 5) {
                      preg_match_all('#Auteur: (.+)<br />#isU',($new->description),$auteur);
                      $auteur = $auteur[1][0];

                      preg_match_all('#Écrit le: (.+)<br />#isU',($new->description),$date);
                      $date = strtotime($date[1][0]);

                      if(strlen($new->title) > 20)
                      $titre = substr($new->title, 0, 20).'...';
                      else
                      $titre = $new->title;

                      echo date('d/m/y à H:i',$date).' : <a href="'.$new->link.'">'.($titre).'</a> par '.($auteur).'<br />';
                      }
                      $i++;
                      }
                      ?>
                      1. 1. 1. Je comprends rien... c'est quoi cette histoire de <?xml version="1.0" encoding="iso-8859-1"?> ca sort d'ou? ou tu vois ca, j'ai pas ce truc dans mon code?
                        C'est la première ligne du fichier xml du fig. Voir le code source https://www.lefigaro.fr/rss/figaro_tauxetdevises.xml Le fichier RSS du fig est encodé en iso.

                        2. Bon, là c'est moi qui ne comprend plus, ce n'est pas le fig ça : https://www.pagesjaunes.fr/?action=new&show=10&fid=1&type=RSS
                        C'est quoi l'encodage de cette page ?
                        1. Tu as été voir sur le lien que je t'ai donné ?
                          Il faut utiliser PHP pour générer ce XML.
                          Tu peux le faire à la façon simple avec des echo ou la meilleure avec DOM.
                          1. Modérateur
                            tiens regarde ici :
                            http://www.unesourisetmoi.info/rss1.xml
                            fait avec l'aide de sebsauvage, + un fichier .htaccess pour la compatibilité
                            bon ... mais à faire à la main, du coup je modifs ne sont pas trop féquentes ...
                            >>> voir le code source !
                            1. Ici comme il utilise du PHP il n'y a pas besoin du .htaccess pour préciser le content-type :
                              header('Content-type: text/xml; charset=iso-8859-1');
                              1. Modérateur
                                contenu du .htaccess (pour le flux uniquement):
                                <Files rss2.xml>
                                AddCharset ISO-8859-1 .xml
                                AddType text/xml .xml
                                </Files>
                                <Files traduitrss.xslt>
                                AddCharset ISO-8859-1 .xslt
                                AddType application/xml .xslt
                                </Files>
                                

                                sinon il faut adapter en php pour la génération, mais atom ou ... demandent quand même ceci :
                                <?xml version="1.0" encoding="ISO-8859-1" ?>
                                <feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
                                

                                etc ...
                            • 1
                            • 2