captain_torche Posté 16 Février 2009 Partager Posté 16 Février 2009 Je suis en train de travailler sur un flux XML sur lequel je n'ai pas la main. Quelques caractères sont encodés d'une manière qui m'est inconnue, et bien que ça passe sans problème dans un navigateur, j'ai besoin d'en faire un export en CSV, et ça ne passe plus à cause des points-virgules. Comment transformer une chaîne de ce type : Océan Hôtel en Océan Hôtel En local, un simple html_entity_decode fonctionne très bien, mais pas en distant. Local : PHP 5.2.0 Distant : PHP Version 4.4.9-0.dotdeb.1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 16 Février 2009 Partager Posté 16 Février 2009 J'ai testé cela : <?php$a=html_entity_decode("Océan Hôtel");print $a?> Et le résultat est probant sous php 5.2.8 ! Voir http://ns203670.ovh.net/test.php Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 16 Février 2009 Partager Posté 16 Février 2009 Par contre, html_entity_decode convertit par défaut en ISO-8859-1... et peut-être as-tu deux serveurs configurés différemment. TU devras peut-être utiliser les second et troisième arguments : string html_entity_decode ( string $string [, int $quote_style [, string $charset]] ) avec $quote_style mis à ENT_NOQUOTES et $charset à UTF-8 ??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 16 Février 2009 Auteur Partager Posté 16 Février 2009 Non, malheureusement le problème persiste de mon côté. Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 16 Février 2009 Auteur Partager Posté 16 Février 2009 J'ai testé de cette manière : <?php $texte = 'Océan Hôtel'; $tab_jeux = array( 'ISO-8859-1', 'ISO-8859-15', 'UTF-8', 'cp1251', 'cp1252' ); foreach($tab_jeux as $jeu) { echo '<b>'.$jeu.'</b><br>'; $texte = html_entity_decode($texte, ENT_NOQUOTES, $jeu); echo '<p>'.htmlentities($texte).'</p>'; }?> Et UTF-8 me génère des erreurs : Warning: cannot yet handle MBCS in html_entity_decode()! in /var/www/path/encodage.php on line 12 Apparemment, il s'agit d'un bug de ma version de PHP, qui ne sera pas corrigé : http://bugs.php.net/bug.php?id=25670 Edit : Hop, c'est corrigé ! J'avais oublié que ce serveur était par défaut en PHP4. En PHP5, ça fonctionne tout de suite mieux Merci Dan de t'être penché sur le souci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant