[Reglé] Afficher flux RSS en UTF-8 et ISO-8859-1

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Mustangv8, 27 Mai 2008.

  1. Mustangv8
    Mustangv8 WRInaute discret
    Inscrit:
    11 Avril 2005
    Messages:
    176
    J'aime reçus:
    0
    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:
    Code:
    $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?
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Re: Afficher flux RSS en UTF-8 et ISO-8859-1

    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.
     
  3. serval2a
    serval2a WRInaute accro
    Inscrit:
    21 Mars 2005
    Messages:
    2 550
    J'aime reçus:
    0
    Salut,
    A priori, car je ne connais pas le reste du script, tu peux essayer de remplacer ton code par
    Code:
    $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:
    $data = utf8_decode($rssinfo['data']); 
    Là la fonction ne produira d'effet que si la chaîne data est en UTF-8.
    @+
     
  4. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    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 :)

    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.
     
  5. Mustangv8
    Mustangv8 WRInaute discret
    Inscrit:
    11 Avril 2005
    Messages:
    176
    J'aime reçus:
    0
    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
    :wink:
    Code:
    <?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("&amp;","&",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("&amp;","&",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("&amp;","&",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("&amp;","&",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("&amp;","&",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("&amp;","&",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("&amp;","&",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 ("&", "&amp;",$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);  // 
    }
    }
     
  6. Dikkenek
    Dikkenek WRInaute discret
    Inscrit:
    22 Juin 2006
    Messages:
    79
    J'aime reçus:
    0
    bonjour,
    <?php define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); ?> dans le header pour wordpress
     
  7. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    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.
     
  8. Mustangv8
    Mustangv8 WRInaute discret
    Inscrit:
    11 Avril 2005
    Messages:
    176
    J'aime reçus:
    0
    Non ca ne fonctionne toujours pas mais je vais y arriver :D
    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 :wink:
     
  9. Mustangv8
    Mustangv8 WRInaute discret
    Inscrit:
    11 Avril 2005
    Messages:
    176
    J'aime reçus:
    0
    En fait je suis trop nul. Les modifications de fichier que je faisais, c'etait sur le site en anglais. :oops:
    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. :D
    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 :wink:
     
Chargement...
Similar Threads - [Reglé] Afficher flux Forum Date
[reglé] Dotclear : afficher les billets du même rédacteur Développement d'un site Web ou d'une appli mobile 8 Février 2008
[réglé] Créer un cadre en php et y afficher un résultat Administration d'un site Web 10 Juin 2005
[Réglé] Résultat de recherche indésirable dans la ligne verte Référencement international (langues, pays) 12 Février 2011
[reglé] Title, Meta et Includes Problèmes de référencement spécifiques à vos sites 11 Septembre 2009
[Réglé] Aide pour requete SQL Développement d'un site Web ou d'une appli mobile 30 Juillet 2009
[réglé][Url rewriting] Enlever les variables de sessions URL Rewriting et .htaccess 5 Mars 2009
[Réglé]Requette MySql avec date Développement d'un site Web ou d'une appli mobile 13 Février 2009
[Reglé] Mon serveur ne demarre plus :( Administration d'un site Web 12 Décembre 2008
[Réglé] Problème avec apostrophe dans la balise Title en PHP Développement d'un site Web ou d'une appli mobile 1 Décembre 2008
[réglé] Analyse du header avec une redirection permanente URL Rewriting et .htaccess 27 Novembre 2008
[Réglé] Aide sur Javascript Développement d'un site Web ou d'une appli mobile 27 Novembre 2008
[réglé] Url Rewriting et robots.txt Débuter en référencement 23 Novembre 2008
[reglé]Problème Undefined offset Développement d'un site Web ou d'une appli mobile 6 Novembre 2008
[Réglé] Exclure une URL d'une règle de réécriture URL Rewriting et .htaccess 4 Novembre 2008
[réglé]Reponse double dans une requête avec LEFT JOIN Développement d'un site Web ou d'une appli mobile 22 Octobre 2008
[réglé]Problème d'affichage en très haute résolution Développement d'un site Web ou d'une appli mobile 30 Août 2008
[réglé] url rewriting et apache 2 sur phpmy annu URL Rewriting et .htaccess 3 Juillet 2008
[Réglé]Recherche dans une BDD avec différent critère Développement d'un site Web ou d'une appli mobile 2 Juillet 2008
[réglé] Problème de css avec float Développement d'un site Web ou d'une appli mobile 28 Mai 2008
[reglé] Javascript : ajouter un lien sur une image Développement d'un site Web ou d'une appli mobile 27 Mai 2008