Aller au contenu

Sujets conseillés

Posté

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

Posté

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 ???

Posté

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 ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...