Super mon dernier site est en UTF-8 ! Donc :

  • J'ai mes pages en UTF-8
  • J'ai déclaré le charset en UTF-8 dans les entêtes HTTP
  • Ma base de données est aussi en UTF-8

Je vais sur la page : super le site s'affiche bien par contre les données provenant de MySQL sont encore en ISO et forcement "ça fait tache".

En fait ce problème est assez bête : PHP et MySQL sont tout deux en UTF-8 mais par défaut le lien entre les deux est encore en latin1 et la chaine de caractères est donc traduit de l'UTF-8 en latin1 par MySQL.

Le problème est très facile à régler il suffit d'utiliser mysql_set_charset peu après s'être connecté à MySQL :

mysql_connect('host', 'user', 'pass');
mysql_select_db('database');
mysql_set_charset('utf8');

Cette instruction demande à MySQL d'utiliser UTF-8 et pas autre chose.

Bien sûr il est possible de l'adapter à un autre codage dont vous pouvez voir la liste avec "SHOW CHARACTER SET;".