Si vous appliquez utf8_encode() à une chaîne déjà UTF8, vous obtiendrez une sortie UTF8 déformée.
J'ai créé une fonction qui résout tous ces problèmes. Elle s'appelle Encoding::toUTF8().
Vous n'avez pas besoin de savoir quel est l'encodage de vos chaînes de caractères. Il peut s'agir de Latin1 (iso 8859-1), de Windows-1252 ou d'UTF8, ou encore d'un mélange des trois. Encoding::toUTF8() convertira tout en UTF8.
Je l'ai fait parce qu'un service me donnait un flux de données tout chamboulé, mélangeant ces encodages dans la même chaîne.
Utilisation :
require_once('Encoding.php');
use \ForceUTF8\Encoding; // It's namespaced now.
$utf8_string = Encoding::toUTF8($mixed_string);
$latin1_string = Encoding::toLatin1($mixed_string);
J'ai inclus une autre fonction, Encoding::fixUTF8(), qui corrigera toutes les chaînes UTF8 qui ont l'air déformées parce qu'elles ont été encodées en UTF8 plusieurs fois.
Utilisation :
require_once('Encoding.php');
use \ForceUTF8\Encoding; // It's namespaced now.
$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");
produira un résultat :
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 :
https://github.com/neitanod/forceutf8