Un serveur n'affiche rien, il se contente de transmettre des informations, c'est le navigateur qui va afficher les données selon l'encodage qu'on lui fournit via le code html ou en utilisant un encodage par défaut.
j'ai mis votre code dans le head
maintenant le é arrive ainsi BeyoncГ© a la place de Beyoncé
Ok, surtout laisse bien la balise meta là où tu l'as mise. Il y a eu un mauvais encodage en amont, pour le corriger tu vas convertir ta chaîne dans l'encodage WINDOWS-1251 (une table de caractères pour le cyrillique), ce qui va restituer le code correct de l'encodage utf-8 d'origine et ça devrait être bon:
$str = mb_convert_encoding($str, 'WINDOWS-1251', 'UTF-8');
ou bien:
$str = iconv('UTF-8', 'WINDOWS-1251', $str);
Voilà ce qui a du se produire:
1 2 3 4 5 6 7 8
| // utf-8 é
// code c3 a9 <-- codage correct d'origine en utf-8
// ---------------------------------
// windows-1251 Γ © <-- mais interprété selon le codage pour le cyrillique
// ---------------------------------
// utf-8 d0 93 c2 a9 <-- pour être ré-encodé en utf-8
// ---------------------------------
// windows-1252 Ð Â © <-- interprétation par ton navigateur en l'absence de la balise <meta charset="utf-8"/> |
(le Γ c'est bien sûr le caractère Г mais impossible de l'afficher dans la partie code, va savoir pourquoi!)
Partager