UTF8_decode et le point d’interrogation
Le Vendredi 10 avril 2009 dans Scripts
Une fonction PHP bien utile pour une conversion entre charset, et éviter les points d’interrogation lors d’une conversion avec utf8_decode()
function utf2latin($text) {
$text=htmlentities($text,ENT_COMPAT,'UTF-8');
return html_entity_decode($text,ENT_COMPAT,'ISO-8859-1');
}
Cette fonction permet de passer d’un codage UTF8 à un codage ISO-8859 sans générer de point d’interrogation pour des caractères spéciaux comme l’Euro (€).
Mais avec cette fonction, on peut passer facilement d’un encodage à un autre sans souci.
Source : http://fr.php.net/manual/en/function.htmlentities.php#82534

2 commentaires
mai 7th, 2009
ça marche pô :
$text=htmlentities($text,ENT_COMPAT,’UTF-8′);
me donne €
return html_entity_decode($text,ENT_COMPAT,’ISO-8859-1′);
me donne … €
J’ai donc utilisé :
iconv(« UTF-8″, « ISO-8859-1//TRANSLIT », $text)
qui donne…EUR
Je prends en attendant mieux
avril 2nd, 2011
Je n’arrive pas à implanter cette fonction utf2latin.
Mon code
$myXMLString = file_get_contents("NowOnAir.xml");$myXMLString = utf8_decode($myXMLString);
$Dom = new DOMDocument('1.0', 'iso-8859-1');
$Dom->loadXML($myXMLString);
$artiste = $Dom>getElementsByTagName('Artist')->item(0)->getAttribute('name');
$titre = $Dom>getElementsByTagName('Song')->item(0)->getAttribute('title');
$temps = $Dom>getElementsByTagName('Event')->item(0)->getAttribute('startTime');
$ligne = htmlentities($temps . ' - ' . $artiste . ' - ' . $titre);
echo $ligne;