Vous devez convertir votre chaîne en UTF8 aussi. Utf8_encode() ne vérifie pas le codage de votre chaîne, et parfois il vous donne une chaîne foirée, donc j'ai fait une fonction appelée Encoding :: toUTF8() pour le faire correctement.
Vous n'avez pas besoin de connaître l'encodage de vos chaînes. Il peut être Latin1 (iso 8859-1), Windows-1252 ou UTF8, ou la chaîne peut avoir un mélange d'entre eux. Encoding :: toUTF8() va tout convertir en UTF8. Je l'ai fait parce qu'un service me donnait un flux de données tout foiré, mélangeant ces encodages dans la même chaîne.
Utilisation:
$utf8_string = Encoding::toUTF8($mixed_string);
$latin1_string = Encoding::toLatin1($mixed_string);
J'ai inclus une autre fonction, encodage :: fixUTF8(), Wich corrigera chaque chaîne UTF8 qui ressemble produit brouillées d'avoir été codé en UTF8 plusieurs fois.
Utilisation:
$utf8_string = Encoding::fixUTF8($garbled_utf8_string);
Exemples:
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("FÃÂédÃÂération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
va afficher:
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Télécharger:
http://dl.dropbox.com/u/186012/PHP/forceUTF8.zip
D'où vous obtenez des textes polonais? Si à partir de la base de données, vous devez également définir l'encodage de la base de données après la fonction mysql_connect. – antyrat
D'où proviennent vos données? Base de données? Assurez-vous que la connexion est définie sur UTF-8 (SET NAMES for MySQL). Codé en dur? Assurez-vous de sauvegarder le fichier avec l'encodage UTF-8. – igorw
merci! J'ai enregistré le fichier avec utf8 – Remy