Pb flux RSS et encodage
15 messages
• Page 1 sur 1
-

SWCF - WRInaute occasionnel

- Messages: 343
- Inscription: 28 Jan 2010
Pb flux RSS et encodage
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.
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.
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Pb flux RSS et encodage
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.
Jacques.
-

SWCF - WRInaute occasionnel

- Messages: 343
- Inscription: 28 Jan 2010
Re: Pb flux RSS et encodage
webinyou a écrit: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"
il y a rien :
- Code: Tout sélectionner
<?xml version="1.0"?>
<rss version="2.0"><channel>
Mon fichier php qui génère le flux :
- Code: Tout sélectionner
<?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();
?>
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Pb flux RSS et encodage
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.
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.
-

SWCF - WRInaute occasionnel

- Messages: 343
- Inscription: 28 Jan 2010
Re: Pb flux RSS et encodage
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 ?
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 :
utf8_encode($nws = mysql_query("SELECT id, titre, titreweb, descriptif FROM interview ORDER BY id DESC")) or die(mysql_error());
Ca change pas.
C'était ce que tu me disais où j'ai mal compris ?
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Pb flux RSS et encodage
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.
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.
-

webinyou - WRInaute discret

- Messages: 143
- Inscription: 10 Avr 2010
Re: Pb flux RSS et encodage
1. Renomme
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"
- Code: Tout sélectionner
<?xml version="1.0"?>
- Code: Tout sélectionner
<?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"
-

SWCF - WRInaute occasionnel

- Messages: 343
- Inscription: 28 Jan 2010
Re: Pb flux RSS et encodage
jcaron a écrit: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.
merci ça fonctionne !
merci à vous deux.
Si vous avez une idée pour mettre les flux rss des autres tables (articles et blog) ?
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Pb flux RSS et encodage
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.
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.
-

SWCF - WRInaute occasionnel

- Messages: 343
- Inscription: 28 Jan 2010
Re: Pb flux RSS et encodage
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 :
J'ai opté pour ta deuxième solution.
Pour ceux qui auront le même soucis que moi, voici mon bazar :
//On récupère les interview
utf8_encode($nws = mysql_query("SELECT id, titre, titreweb, descriptif, timestamp FROM interview ORDER BY timestamp DESC")) or die(mysql_error());
//On récupère les articles
utf8_encode($nws2 = mysql_query("SELECT id, titre, titreweb, descriptif, timestamp FROM article ORDER BY timestamp DESC")) or die(mysql_error());
//On récupère les portraits
utf8_encode($nws3 = mysql_query("SELECT id, interviewe, intervieweweb, descriptif, timestamp FROM portrait ORDER BY timestamp DESC")) or die(mysql_error());
//On récupère le blog
utf8_encode($nws4 = mysql_query("SELECT id, titre, titreweb, timestamp FROM blog ORDER BY timestamp 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"], utf8_encode($interview["titre"]), $interview["titreweb"], utf8_encode($interview["descriptif"]), $interview["timestamp"]);
}
//On ajoute chaque article au fichier RSS
while($article = mysql_fetch_assoc($nws2))
{
add_article_node($xml_file, $channel, $article["id"], utf8_encode($article["titre"]), $article["titreweb"], utf8_encode($article["descriptif"]), $article["timestamp"]);
}
//On ajoute chaque article au fichier RSS
while($portrait = mysql_fetch_assoc($nws3))
{
add_portrait_node($xml_file, $channel, $portrait["id"], utf8_encode($portrait["interviewe"]), $portrait["intervieweweb"], utf8_encode($portrait["descriptif"]), $portrait["timestamp"]);
}
//On ajoute chaque article du blog au fichier RSS
while($blog = mysql_fetch_assoc($nws4))
{
add_blog_node($xml_file, $channel, $blog["id"], utf8_encode($blog["titre"]), $blog["titreweb"], utf8_encode($blog["descriptif"]), $blog["timestamp"]);
}
15 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- intégrations adsenses flux rss et variable dans url flux rss ???
- Flux-rss.org, annuaire de flux RSS
- RSS et encodage
- Encodage RSS
- encodage fichier rss
- Votre avis sur le site Atypic-flux (Magazine en Flux RSS)
- [Flux RSS] Impact d'un flux pour le positionnement ?
- RSS-Image.com - Générateur d'image en direct pour vos flux RSS !
- Comment désindexer un flux rss (le flux xml) ?
- [Résolu] Implémenter un Flux RSS avec RSS Graffiti
- Comment obtenir le flux RSS d'un compte Twitter
- Comment suivre un contact Google+ par flux RSS
- Utiliser Actifpub pour l'intégration d'un flux RSS externe sur son site
- Intégrer facilement un flux RSS externe
- Un (RSS) pour tous (les blogs officiels de Google)
- Intégrer un flux RSS sur son site
- Des RSS rémunérés ça existe !
- Google Webmasters Tools indique le nombre d'abonnés à vos flux RSS/Atom
Consultez la description détaillée des produits ou services de Google suivants : Google Feed Fetcher, FeedBurner, Google Reader, Google ReadAir
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
