Aller au contenu

Problème d'encodage


captain_torche

Sujets conseillés

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

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

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

Veuillez vous connecter pour commenter

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



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