Encodage RSS

Résolu
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   -  
bg62 Messages postés 23735 Date d'inscription   Statut Modérateur Dernière intervention   -
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?
A voir également:

22 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Un flux RSS (ou Atom, ...) n'est rien d'autre qu'un fichier XML avec quelques consignes (chaque article est représenté par le nœud "item", le nœud "title" contient le titre de l'article, ...).
http://www.sebsauvage.net/comprendre/rss/creer.html
1
bg62 Messages postés 23735 Date d'inscription   Statut Modérateur Dernière intervention   2 409
 
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 !
0
bg62 Messages postés 23735 Date d'inscription   Statut Modérateur Dernière intervention   2 409
 
y a pas mieux .... ;)
0
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   6
 
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
notobe Messages postés 1952 Date d'inscription   Statut Membre Dernière intervention   213
 
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...
0
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   6
 
ok mais je comprends rien.. c'est avion qui m'avait filer ce code.. moi je sais pas programmer..
0
notobe Messages postés 1952 Date d'inscription   Statut Membre Dernière intervention   213
 
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 !
0
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   6
 
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?
0
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   6
 
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?
0
notobe Messages postés 1952 Date d'inscription   Statut Membre Dernière intervention   213
 
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.
0
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   6
 
j'utilise dreamweaver.. comment faire?
0
notobe Messages postés 1952 Date d'inscription   Statut Membre Dernière intervention   213
 
0
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   6
 
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...
0
notobe Messages postés 1952 Date d'inscription   Statut Membre Dernière intervention   213
 
Si tu codes toutes tes pages en utf-8 (en ayant bien réglé dream), tu n'auras plus aucun problèmes justement !
Sinon, rajoute dans le script php qui récupère le flux xml la fonction utf8_decode http://www.manuelphp.com/php/function.utf8-decode.php
0
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   6
 
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?
0
notobe Messages postés 1952 Date d'inscription   Statut Membre Dernière intervention   213
 
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...
0
louis1984 Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   6
 
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++;
}
?>
0
notobe Messages postés 1952 Date d'inscription   Statut Membre Dernière intervention   213
 
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 ?
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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.
0
bg62 Messages postés 23735 Date d'inscription   Statut Modérateur Dernière intervention   2 409
 
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 !
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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');
0
bg62 Messages postés 23735 Date d'inscription   Statut Modérateur Dernière intervention   2 409
 
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 ...
0