Encoder une chaine en UTF8 quelque soit l’encodage d’origine

0
1501

Il arrive que nous ayons besoin de traiter des données d’origine multiples et avec des encodages de caractère inconnus (données saisies, issues de fichiers XML, d’une base de donnée, d’un service web…). Voici une méthode très simple qui permet en PHP d’afficher systématiquement des caractères au format UTF8 même lorsque l’on ne connait pas l’encodage d’origine des caractères.

Lorsqu’une page web spécifié dans sont entête (section head) un encodage différent de celui des caractères réellement affichés, ces derniers ne s’affichent pas correctement. Ils apparaissent alors sous forme cabalistique car il sont mal interprétés par le navigateur.

Voici un code qui permet, après détection de l’encodage actuel de la chaine de caractère $text de la convertir au format voulu, ici de l’UTF8.


iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);

retourne une chaine encodée en UTF 8.

Pour retourner une chaine dans un autre format comme de ISO-8859-1 :

iconv(mb_detect_encoding($text, mb_detect_order(), true), "ISO-8859-1", $text);
Convertion d'une chaine en UTF8

Pour plus de détails sur la fonction iconv : documentation officielle

LAISSER UNE REPONSE