Lien entre PHP et MySQL en UTF8
Par RaphAstronome le jeudi, 20 août 2009, 23:38 - Internet - Lien permanent
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;".
Commentaires