[Reglé] Afficher flux RSS en UTF-8 et ISO-8859-1
9 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
[Reglé] Afficher flux RSS en UTF-8 et ISO-8859-1
J'ai un annuaire RSS en anglais qui tourne trés bien depuis des années et j'ai récemment crée son équivalent en francais mais j'ai des problemes avec l'affichage des accents.
Les flux encodés en UTF-8 passent trés bien mais pas ceux encodés en ISO-8859-1. Y a t il un moyen pour que les deux types de flux puissent etre affichés correctement?
L'annuaire est accessible depuis mon www et vous pouvez cliquer sur le premier flux dans le bloc Populaires pour voir ce que ca donne.
Il semble aussi qu'il y a une fonction qui doit convertir le ISO en UTF. Serais ce un probleme de serveur ou de code?
Voici ce que j'ai pu localiser:
Quelqu'un a t il une idée?
Les flux encodés en UTF-8 passent trés bien mais pas ceux encodés en ISO-8859-1. Y a t il un moyen pour que les deux types de flux puissent etre affichés correctement?
L'annuaire est accessible depuis mon www et vous pouvez cliquer sur le premier flux dans le bloc Populaires pour voir ce que ca donne.
Il semble aussi qu'il y a une fonction qui doit convertir le ISO en UTF. Serais ce un probleme de serveur ou de code?
Voici ce que j'ai pu localiser:
- Code: Tout sélectionner
$data = $rssinfo['data'];
if (!$rssinfo['utf8']) {
preg_match("#.*?encoding=[\'\"](.*?)[\'\"].*#si", $data, $tag);
$encoding = (isset($tag[1]) ? strtoupper($tag[1]) : 'ISO-8859-1');
if (function_exists('mb_detect_encoding') && function_exists('mb_convert_encoding') && function_exists('mb_decode_numericentity')) {
$coding = mb_detect_encoding($data);
$data = mb_convert_encoding($data,"UTF-8","$coding,$encoding,ISO-8859-2,auto");
if ($coding != "ASCII") $data = mb_decode_numericentity($data, $convmap, 'UTF-8');
}elseif(function_exists('iconv')) {
$data = iconv($encoding, 'UTF-8', $data);
}else{
$data = utf8_encode($data);
}
}
Quelqu'un a t il une idée?
Dernière édition par Mustangv8 le Mar Mai 27, 2008 22:30, édité 1 fois.
Re: Afficher flux RSS en UTF-8 et ISO-8859-1
Mustangv8 a écrit:Les flux encodés en UTF-8 passent trés bien mais pas ceux encodés en ISO-8859-1.
[...]
Il semble aussi qu'il y a une fonction qui doit convertir le ISO en UTF. Serais ce un probleme de serveur ou de code?
A priori:
- le flux reçu est en ISO-8859-1, et le dit bien dans son tag <?xml>
- tu envoies les choses en UTF-8
- le bout de code indiqué doit bien faire la conversion vers UTF-8 quand c'est nécessaire.
Note cependant que:
- le code essaie de voir si toutes sortes de fonctions existent (mb_detect_encoding, mb_convert_encoding, mb_decode_numericentity), et les utilise si elles sont présentes
- sinon il se rabat sur "iconv" si elle est présente
- sinon il se rabat sur utf8_encode
Normalement avec tout ça ça devrait marcher à tous les coups, mais tu peux voir si les fonctions correspondantes sont présentes ou pas dans ton install, et si ça change quelque chose avec ou sans.
Sinon la grande question c'est de savoir s'il utilise effectivement ce bout de code, et là, la seule solution c'est d'ajouter des traces pour voir s'il y passe ou pas (et/ou dans quelles parties il passe et/ou les valeurs des différentes variables au fur et à mesure).
Jacques.
Salut,
A priori, car je ne connais pas le reste du script, tu peux essayer de remplacer ton code par
Etant dit que si me souviens bien la fonction n'aura un effet que si la chaîne data n'est pas en UTF-8.
Sinon comme je te l'avais indiqué par ailleurs le plus simple est de faire l'inverse c-a-d mettre ton charset en iso (parce qu'on est en zone iso et que t'auras un max de flux dans ce langage) et remplacer ton code par un truc comme cela :
Là la fonction ne produira d'effet que si la chaîne data est en UTF-8.
@+
A priori, car je ne connais pas le reste du script, tu peux essayer de remplacer ton code par
- Code: Tout sélectionner
$data = utf8_encode($rssinfo['data']);
Etant dit que si me souviens bien la fonction n'aura un effet que si la chaîne data n'est pas en UTF-8.
Sinon comme je te l'avais indiqué par ailleurs le plus simple est de faire l'inverse c-a-d mettre ton charset en iso (parce qu'on est en zone iso et que t'auras un max de flux dans ce langage) et remplacer ton code par un truc comme cela :
- Code: Tout sélectionner
$data = utf8_decode($rssinfo['data']);
Là la fonction ne produira d'effet que si la chaîne data est en UTF-8.
@+
serval2a a écrit:Salut,
A priori, car je ne connais pas le reste du script, tu peux essayer de remplacer ton code par
- Code: Tout sélectionner
$data = utf8_encode($rssinfo['data']);
Etant dit que si me souviens bien la fonction n'aura un effet que si la chaîne data n'est pas en UTF-8.
Pas vraiment, non, elle va ré-encoder à nouveau, et ça faire des choses par jolies genre é un peu partout
Ah ben tiens d'ailleurs j'avais pas ouvert les yeux, c'est le cas dans le flux en question, ce qui signifie qu'il y deux encodages ISO->UTF-8 successifs. Faut en virer un
serval2a a écrit:Sinon comme je te l'avais indiqué par ailleurs le plus simple est de faire l'inverse c-a-d mettre ton charset en iso (parce qu'on est en zone iso et que t'auras un max de flux dans ce langage) et remplacer ton code par un truc comme cela :
- Code: Tout sélectionner
$data = utf8_decode($rssinfo['data']);
Là la fonction ne produira d'effet que si la chaîne data est en UTF-8.
@+
Quelle drôle d'idée... Il faut encourager tout le monde à passer en UTF-8, pas l'inverse! Qui te dit qu'il n'aura pas un site avec des flux en polonais, en russe, en arabe ou en japonais le mois prochain?
Et même pour du français, il y a tellement de confusion entre ISO-8859-1, ISO-8859-15 et windows-1252 (au moins) que même le symbole € risque de ne pas passer dans de nombreux cas...
Jacques.
Note cependant que:
- le code essaie de voir si toutes sortes de fonctions existent (mb_detect_encoding, mb_convert_encoding, mb_decode_numericentity), et les utilise si elles sont présentes
- sinon il se rabat sur "iconv" si elle est présente
- sinon il se rabat sur utf8_encode
Normalement avec tout ça ça devrait marcher à tous les coups, mais tu peux voir si les fonctions correspondantes sont présentes ou pas dans ton install, et si ça change quelque chose avec ou sans.
Tu veux dire que ces fonctions doivent etre installées dans le serveur en tant que modules php? Ou est-ce des scripts extérieurs a installer?
Serval, j'ai essayé de changer le code comme tu as dit mais il n'y a eu aucun changement.
Jacques a raison, 90% des flux (tous francais) dans l'annuaire sont en UTF-8. C'est les 10% restants qui me posent un probleme.
J'avoue que je suis completement perdu quand il faut modifier du php.
Voici tout le contenu de ce fichier au cas ou ca vous aide.
Merci a tous les deux
- Code: Tout sélectionner
<?php
/*********************************************
********************************************
RSS Feeds Version 2.3-
-Added ability to select an existing block to display if admin chooses instead of typing text for header and footer blocks.
-Added ability to import feeds from CPG Headlines database
-Added ability to export feed to CPG Headlines database.
-Changed view formatting to get rid of the showing title and descriptions twice for each feed.
-Better Atom support
-Gave admin ability to clear all feed caches
-Added ability for admin to refresh feed's cache (Deletes the feed's stored cache and recreates with current feed info)
-Admins now see the parsed feed to assist in approving.
-Added preview a feed prior to submitting.
-Users and admins now only have to enter the url to submit a feed. The feed is parsed and Title and descriptions autopopulate with the feeds info.
-Fixed printer friendly format
-Fixed top and new table formatting again...
-Added Editor's pick block and ability for admin to change which feed shows
-A small cache fix
-Ability to change number of displayed items in random view block.
-Ability to change number of displayed items per feed
-Removed formating of parsed feed from parser and put the formating into index.php
-Each field is not output from parser as individual array values rather than one long formated string
-Added check for URL already exists during feed submission and admin entry
-More encoding/decoding/parsing fixes
-if-modified conditional get fix
-Show new location if 302 or 301 received
-Fixed xml error reporting in validate xml
Modified by Jordo 5/13/05.
********************************************
RSS Module
********************************************
Copyright © 2004 - 2005 by Richard Jordan (Jordo)
http://www.jordomedia.com
********************************************/
if (!defined('CPG_NUKE')) { exit; }
function startElement($parser, $name, $attrs) {
global $insideitem, $tag, $insidechannel, $insidefeed, $insideimage, $insideentry;
if ($insidefeed) {
$tag = $name;
} elseif ($name == "FEED") {
$insidefeed = true;
}
if ($insidechannel) {
$tag = $name;
} elseif ($name == "CHANNEL") {
$insidechannel = true;
}
if ($insideitem) {
$tag = $name;
} elseif ($name == "ITEM") {
$insideitem = true;
}
if ($insideimage) {
$tag = $name;
} elseif ($name == "IMAGE") {
$insideimage = true;
}
if ($insideentry) {
$tag = $name;
} elseif ($name == "ENTRY") {
$insideentry = true;
}
}
function endElement($parser, $name) {
global $insideitem, $tag, $eurl, $ptitle, $pdescription, $item_count, $plink, $ppubdate, $insidechannel, $insidefeed, $itemdata, $insideimage, $insideentry, $purl, $pwidth, $pheight, $rsscontent, $plastbuilddate;
if ($name == "CHANNEL" || $name == "FEED") {
$rsscontent['channel']['title'] = (isset($ptitle[1]) ? html_entity_decode(str_replace("&","&",htmlspecialchars(trim($ptitle[1])))) : '');
$rsscontent['channel']['link'] = (isset($plink[1]) ? htmlspecialchars(trim($plink[1])) : '');
if ($ppubdate[1]) {
$rsscontent['channel']['date'] = htmlspecialchars(trim($ppubdate[1]));
} elseif($plastbuilddate) {
$rsscontent['channel']['date'] = htmlspecialchars(trim($plastbuilddate));
} else{
$rsscontent['channel']['date'] = '';
}
$rsscontent['channel']['desc'] = html_entity_decode(str_replace("&","&",htmlspecialchars($pdescription[1])));
$ptitle[1] = $pdescription[1] = $plink[1] = $ppubdate[1] = $plastbuilddate = "";
$insidechannel = false;
}
if ($name == "IMAGE") {
$rsscontent['image']['title'] = (isset($ptitle[2]) ? html_entity_decode(str_replace("&","&",htmlspecialchars(trim($ptitle[2])))) : '');
$rsscontent['image']['desc'] = (isset($pdescription[2]) ? $pdescription[2] : '');
$rsscontent['image']['link'] = (isset($plink[2]) ? trim($plink[2]) : '');
$rsscontent['image']['url'] = (isset($purl) ? trim($purl) : '');
$rsscontent['image']['width'] = (isset($pwidth) ? $pwidth : '');
$rsscontent['image']['height'] = (isset($pheight) ? $pheight : '');
$plink[2] = $pimurl = $pwidth = $pheight = $ptitle[2] = $pdescription[2] = "";
$insideimage = false;
}
if ($name == "ITEM") {
$rsscontent['item'][$item_count]['link'] = (isset($plink[3]) ? trim($plink[3]) : '');
$rsscontent['item'][$item_count]['title'] = (isset($ptitle[3]) ? html_entity_decode(str_replace("&","&",htmlspecialchars(trim($ptitle[3])))) : '');
$rsscontent['item'][$item_count]['date'] = (isset($ppubdate[3]) ? htmlspecialchars(trim($ppubdate[3])) : '');
$rsscontent['item'][$item_count]['desc'] = (isset($pdescription[3]) ? html_entity_decode(str_replace("&","&",htmlspecialchars($pdescription[3]))) : '');
$item_count++;
$ptitle[3] = $pdescription[3] = $plink[3] = $ppubdate[3] = "";
$insideitem = false;
}
if ($name == "ENTRY") {
$rsscontent['item'][$item_count]['link'] = (isset($eurl) ? $eurl : '');
$rsscontent['item'][$item_count]['title'] = (isset($ptitle[4]) ? html_entity_decode(str_replace("&","&",htmlspecialchars(trim($ptitle[4])))) : '');
$rsscontent['item'][$item_count]['date'] = (isset($ppubdate[4]) ? htmlspecialchars(trim($ppubdate[4])) : '');
$rsscontent['item'][$item_count]['desc'] = (isset($pdescription[4]) ? html_entity_decode(str_replace("&","&",htmlspecialchars($pdescription[4]))) : '');
$item_count++;
$ptitle[4] = $pdescription[4] = $plink[4] = $ppubdate[4] = "";
$insideitem = false;
}
}
function characterData($parser, $data) {
global $insideitem, $eurl, $tag, $ptitle, $item_count, $pdescription, $plink, $ppubdate, $insidechannel, $insidefeed, $itemdata, $insideentry, $insideimage, $purl, $pwidth, $pheight, $rsscontent, $plastbuilddate;
if ($insideentry) {
switch ($tag) {
case "TITLE":
$ptitle[4] .= $data;
break;
case "CONTENT":
$pdescription[4] .= $data;
break;
case "SUMMARY":
$pdescription[4] .= $data;
break;
case "DIV":
$pdescription[4] .= $data;
break;
case "P":
$pdescription[4] .= $data;
break;
case "BR":
$pdescription[4] .= $data;
break;
case "LINK":
$plink[4] .= $data;
break;
case "MODIFIED":
$ppubdate[4] .= $data;
break;
}
}elseif (($insidechannel || $insidefeed) && !$insideitem && !$insideimage) {
switch ($tag) {
case "TITLE":
$ptitle[1] .= $data;
break;
case "DESCRIPTION":
$pdescription[1] .= $data;
break;
case "TAGLINE":
$pdescription[1] .= $data;
break;
case "LINK":
$plink[1] .= $data;
break;
case "MODIFIED":
$ppubdate[1] .= $data;
break;
case "PUBDATE":
$ppubdate[1] .= $data;
break;
case "LASTBUILDDATE":
$plastbuilddate .= $data;
break;
}
} elseif ($insideitem) {
switch ($tag) {
case "TITLE":
$ptitle[3] .= $data;
break;
case "DESCRIPTION":
$pdescription[3] .= $data;
break;
case "UNENCODED":
$pdescription[3] .= $data;
break;
case "LINK":
$plink[3] .= $data;
break;
case "PUBDATE":
$ppubdate[3] .= $data;
break;
case "DC:DATE":
$ppubdate[3] .= $data;
break;
}
} elseif ($insideimage && !$insideitem) {
switch ($tag) {
case "TITLE":
$ptitle[2] .= $data;
break;
case "DESCRIPTION":
$pdescription[2] .= $data;
break;
case "LINK":
$plink[2] .= $data;
break;
case "PUBDATE":
$ppubdate[2] .= $data;
break;
case "URL":
$purl .= $data;
break;
case "WIDTH":
$pwidth .= $data;
break;
case "HEIGHT":
$pheight .= $data;
break;
}
}
}
function parse_rss($url, $linkcheck = false, $xmlcheck = false) {
global $rsscontent, $eurl, $ptitle, $pdescription, $plink, $ppubdate, $plastbuilddate, $purl, $item_count;
$insideitem = false;
$insidechannel = false;
$insideimage = false;
$tag = "";
$eurl = $url;
$item_count = '1';
$ptitle[1] = $pdescription[1] = $plink[1] = $ppubdate[1] = $purl = "";
$ptitle[2] = $pdescription[2] = $plink[2] = $ppubdate[2] = "";
$ptitle[3] = $pdescription[3] = $plink[3] = $ppubdate[3] = "";
$ptitle[4] = $pdescription[4] = $plink[4] = $ppubdate[4] = "";
$rsscontent['channel'] = $rsscontent['image'] = $rsscontent['item'] = "";
$pwidth = $purl = $pheight = $plastbuilddate = "";
$convmap = array(0x0, 0x2FFFF, 0, 0xFFFF);
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if ($linkcheck) {
$rssinfo = get_rssinfo($url, false);
return $rssinfo;
}
$rssinfo = get_rssinfo($url, true);
if (isset($rssinfo['urlerror'])) {
return $rssinfo;
}else{
$data = $rssinfo['data'];
if (!$rssinfo['utf8']) {
preg_match("#.*?encoding=[\'\"](.*?)[\'\"].*#si", $data, $tag);
$encoding = (isset($tag[1]) ? strtoupper($tag[1]) : 'ISO-8859-1');
if (function_exists('mb_detect_encoding') && function_exists('mb_convert_encoding') && function_exists('mb_decode_numericentity')) {
$coding = mb_detect_encoding($data);
$data = mb_convert_encoding($data,"UTF-8","$coding,$encoding,ISO-8859-2,auto");
if ($coding != "ASCII") $data = mb_decode_numericentity($data, $convmap, 'UTF-8');
}elseif(function_exists('iconv')) {
$data = iconv($encoding, 'UTF-8', $data);
}else{
$data = utf8_decode($data);
}
}
$data = str_replace ("&", "&",$data);
if (!xml_parse($xml_parser, $data)) {
$rssinfo['xml'] = $rsscontent['error'] = "XML error:" . xml_error_string(xml_get_error_code($xml_parser)) . " at line " . xml_get_current_line_number($xml_parser);
if ($xmlcheck) {
return $rssinfo;
}else{
return $rsscontent;
}
}
xml_parser_free($xml_parser);
}
if ($xmlcheck) {
$rssinfo['xml'] = _RSSVALID;
return $rssinfo;
}else{
return $rsscontent;
}
}
function get_rssinfo($url, $getdata=false, $del=false) {
global $rssconfig;
$rdf = parse_url($url);
if (!isset($rdf['host'])) return false;
if (!isset($rdf['path'])) $rdf['path'] = '/';
if (!isset($rdf['port'])) $rdf['port'] = 80;
if (!isset($rdf['query'])) $rdf['query'] = '';
elseif ($rdf['query'] != '') $rdf['query'] = '?'.$rdf['query'];
$cache = rss_cache($rdf, false, '', $del);
if($del) return $cache;
$file = array('size'=>0, 'type'=>'', 'date'=>0, 'animation'=>false);
if ($fp = fsockopen($rdf['host'], $rdf['port'], $errno, $errstr, 15)) {
fputs($fp, 'GET '.$rdf['path'].$rdf['query']." HTTP/1.0\r\n");
fputs($fp, "User-Agent: CPG RSS Module File Reader\r\n");
if ($cache) {
fputs($fp, "If-Modified-Since: ".$cache['date']."\r\n");
if(isset($cache['etag'])) fputs($fp, "If-None-Match: ".$cache['etag']."\r\n");
}
if (GZIPSUPPORT) fputs($fp, "Accept-Encoding: gzip;q=0.9\r\n");
fputs($fp, "HOST: $rdf[host]\r\n\r\n");
$data = rtrim(fgets($fp, 300));
if (ereg(' 304 Not Modified', $data)) {
if ((time()-(60 * $rssconfig['cache_time'])) <= $cache['cache']) {
$file = $cache;
}else{
$data = '';
fputs($fp,"Connection: close\r\n\r\n");
fclose($fp);
$fp = fsockopen($rdf['host'], $rdf['port'], $errno, $errstr, 15);
fputs($fp, 'GET '.$rdf['path'].$rdf['query']." HTTP/1.0\r\n");
fputs($fp, "User-Agent: CPG RSS Module File Reader\r\n");
if (GZIPSUPPORT) fputs($fp, "Accept-Encoding: gzip;q=0.9\r\n");
fputs($fp, "HOST: $rdf[host]\r\n\r\n");
$data = rtrim(fgets($fp, 300));
}
}elseif (!ereg(' 200 OK', $data)) {
if (ereg(' 301 Moved Permanently', $data)) {
$file['301']='301 Moved Permanently';
}elseif (ereg(' 301 Error', $data)) {
$file['301']='301 Error';
}elseif (ereg(' 307 Temporary Redirect', $data)) {
trigger_error($rdf['path'].$rdf['query']."<br />$data", E_USER_WARNING);
$file['urlwarning'] = $data;
}elseif (ereg(' 302 Moved Temporarily', $data)) {
$file['302']='302 Moved Temporarily';
}elseif (ereg(' 302 Object moved', $data)) {
$file['302']='302 Object moved';
}elseif (ereg(' 302 Found', $data)) {
$file['302']='302 Found';
}else{
trigger_error($rdf['path'].$rdf['query']."<br />$data", E_USER_WARNING);
$file['urlerror'] = $data;
return $file;
}
}
if (!isset($file['cache'])) {
$file['utf8'] = $GZIP = false;
//$cache_data = '';
// Read all headers
while (!empty($data)) {
$data = rtrim(fgets($fp, 300)); // read lines
//$cache_data .= $data;
if (ereg('Content-Length: ', $data)) {
$file['size'] = trim(eregi_replace('Content-Length: ', '', $data));
}
elseif (ereg('Content-Type: ', $data)) {
$file['type'] = trim(eregi_replace('Content-Type: ', '', $data));
}
elseif (ereg('Last-Modified: ', $data)) {
$file['date'] = trim(eregi_replace('Last-Modified: ', '', $data));
}
elseif (ereg('ETag: ', $data)) {
$file['etag'] = trim(eregi_replace('ETag: ', '', $data));
}
elseif (ereg('Location: ', $data)) {
$file['location'] = trim(eregi_replace('Locaton: ', '', $data));
if(isset($file['302'])){
trigger_error("<br />" . _302ERROR . $file['location']."<br />", E_USER_WARNING);
$file['urlerror'] = "<br />" . $file['302']." - "._302ERROR . $file['location']."<br />";
return $file;
}elseif(isset($file['301'])) {
trigger_error("<br />" . _302ERROR . $file['location']."<br />", E_USER_WARNING);
$file['urlerror'] = "<br />".$file['301']." - "._302ERROR . $file['location']."<br />";
return $file;
}
}
if (eregi('Content-Encoding: gzip', $data) || eregi('Content-Encoding: x-gzip', $data)) { $GZIP = true; }
if (eregi('charset=utf-8', $data)) { $file['utf8'] = true; }
}
$data = '';
if ($getdata) {
while(!feof($fp)) {
$data .= fread($fp, 1024); // read binary
}
if ($GZIP) { $data = gzinflate(substr($data,10,-4)); }
if ($getdata) $file['data'] = $data;
}
fputs($fp,"Connection: close\r\n\r\n");
fclose($fp);
$cache = rss_cache($rdf, true, $file);
}
} else {
trigger_error($errstr, E_USER_WARNING);
$file['urlerror'] = $errstr;
return $file;
}
return $file;
}
function rss_cache($rdf, $save, $data = '', $del=false, $delall=false) {
$cachedir = "cache/";
$filename = "rss_1119_".md5($rdf['host'].$rdf['path'].$rdf['query']).".inc";
if(!$save) {
$data = '';
if($del) {
if(!file_exists($cachedir.$filename)) return "<p>Error, File was not Cached.</p>";
if(unlink($cachedir.$filename)) {
return "<p>Cache Deleted</p>";
}else{
return "<p>Error, could not delete cache file</p>";
}
}elseif($delall) {
$count = '0';
foreach (glob($cachedir."rss_1119_*.inc") as $delfilename) {
echo "$delfilename cleared.\n<br />";
unlink($delfilename);
$count++;
}
return $count;
}else{
if(!file_exists($cachedir.$filename)) return false;
$data = file($cachedir.$filename);
$data = join($data, '');
$data = unserialize($data);
return $data;
}
}else{
$data['cache'] = time();
$data = serialize($data);
$fp = fopen($cachedir.$filename, 'wb');
if(!$fp||(fwrite($fp, $data)==false)) echo '<p>Error, could not store cache file</p>';
fclose($fp);
chmod($cachedir.$filename, 0644); //
}
}
Bon, en fait je pense que c'est tout con: ton code utilise xml_parser_create, dont le comportement au niveau gestion de l'encodage a changé suivant les versions de PHP (cf http://www.php.net/manual/en/function.x ... create.php).
Je suppose que tu as un PHP >= 5.0.2, donc quoi qu'il arrive, le parser XML se débrouille tout seul pour détecter l'encodage source et convertir tout ça en UTF-8. Donc comme ton code fait déjà une première conversion en UTF-8 (mais laisse le "encoding=ISO-8859-1"), ça casse tout.
Remplace la ligne:
if (!$rssinfo['utf8']) {
par:
if (0 && !$rssinfo['utf8']) {
Et ça devrait marcher tout seul à mon avis.
Jacques.
Je suppose que tu as un PHP >= 5.0.2, donc quoi qu'il arrive, le parser XML se débrouille tout seul pour détecter l'encodage source et convertir tout ça en UTF-8. Donc comme ton code fait déjà une première conversion en UTF-8 (mais laisse le "encoding=ISO-8859-1"), ça casse tout.
Remplace la ligne:
if (!$rssinfo['utf8']) {
par:
if (0 && !$rssinfo['utf8']) {
Et ça devrait marcher tout seul à mon avis.
Jacques.
Non ca ne fonctionne toujours pas mais je vais y arriver
J'ai installé le module apache iconv sur le serveur de l'annuaire rss en anglais et les flux ISO s'affichent avec les accents et autres caracteres francais.
J'ai installé le meme module sur le serveur du site en francais et le probleme persiste mais au moins je sais ou chercher. C'est du coté du serveur. Merci beaucoup pour votre aide. J'aurai pas réussi sans vous
J'ai installé le module apache iconv sur le serveur de l'annuaire rss en anglais et les flux ISO s'affichent avec les accents et autres caracteres francais.
J'ai installé le meme module sur le serveur du site en francais et le probleme persiste mais au moins je sais ou chercher. C'est du coté du serveur. Merci beaucoup pour votre aide. J'aurai pas réussi sans vous
Remplace la ligne:
if (!$rssinfo['utf8']) {
par:
if (0 && !$rssinfo['utf8']) {
En fait je suis trop nul. Les modifications de fichier que je faisais, c'etait sur le site en anglais.
Le serveur n'avait donc rien a voir le probleme et la modification de code ci-dessus fonctionne a la perfection sur le site francais.
Merci beaucoup pour ton aide Jacques. Ca faisait 2 mois que je galerais avec ca et j'étais loin de penser trouver la solution sur un forum sur le référencement. Merci aussi a tous ceux qui m'ont répondus
9 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Intégrer facilement un flux RSS externe
- Utiliser Actifpub pour l'intégration d'un flux RSS externe sur son site
- Intégrer un flux RSS sur son site
- Un (RSS) pour tous (les blogs officiels de Google)
- Des RSS rémunérés ça existe !
- Référencement vidéo sur Exalead
- La syndication de contenu : afficher un flux RSS sur son site
- Google Webmasters Tools indique le nombre d'abonnés à vos flux RSS/Atom
- La calculatrice de Google
- Moteur de recherche de flux RSS / Atom
- Charset : ISO-8859-1, ISO-8859-15 ou UTF-8 ?
- utf-8, iso-8859-1, iso-8859-15 ?
- UTF-8 ou ISO 8859-1 ?
- Conversion d'un site ISO-8859-1 en UTF-8
- URL UTF-8 retournée décodée en ISO-8859-1 avec IE6 SP1
- charset=iso-8859-1 ou charset=utf-8 ?
- charset=iso-8859-1 ou ...8859-15 ?
- Flux RSS et UTF-8
- Interclassement pour ISO-8859-1
- Balise meta charset=iso-8859-1
- passage à iso-8859-1 : une mauvaise idée ?
- Afficher un flux rss via javascript
- Encodage ISO-8859-1: paramètrage éditeur de code ?
- Afficher des flux RSS !!
- charset=iso-8859-1 : refaire tout mon site ?
Consultez la description détaillée des produits ou services de Google suivants : Google Site Stats, Google Feed Fetcher, Google Reader, Google ReadAir
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum