Discussion:
PHP et MySQL en full UTF8
(trop ancien pour répondre)
CrazyCat
2007-10-12 11:04:30 UTC
Permalink
Bonjour,

je suis sûr que je ne m'adresse pas au bon groupe, mais peut-être
quelqu'un a déjà rencontré et solutionné ce problème:

J'ai une base MySQL faite pour fonctionner en UTF-8, tout est à priori
bien configuré. Mon apache travaille en UTF-8, tout va bien.

Pour pouvoir insérer mes données correctement dans la base, j'ai été
obligé d'ajouter après la connexion:
mysql_query( "SET NAMES utf8", $this->connexion);
mysql_query("SET CHARACTER SET 'utf8'", $this->connexion);

Jusque là, tout va bien, mes données sont enregistrées en UTF-8 dans la
base.
Par contre, lorsque je récupère les données dans la base avec un select,
je dois faire un utf8_decode() pour les avoir correctement, il
semblerait qu'à un moment les données soient ré-encodées.

Qu'est-ce qui provoque ça et surtout comment le corriger?
--
Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu
Réseau IRC Francophone: http://www.crazy-irc.net
Olivier Miakinen
2007-10-12 11:26:50 UTC
Permalink
Post by CrazyCat
J'ai une base MySQL faite pour fonctionner en UTF-8, tout est à priori
bien configuré. Mon apache travaille en UTF-8, tout va bien.
[...]
Par contre, lorsque je récupère les données dans la base avec un select,
je dois faire un utf8_decode() pour les avoir correctement, il
semblerait qu'à un moment les données soient ré-encodées.
Cela semble vouloir dire que le script PHP qui fait le select « se
considère » en ISO-8859-1. Il manque peut-être l'instruction suivante
en début de script :
header('Content-Type: text/html; charset=UTF-8');
CrazyCat
2007-10-12 13:56:15 UTC
Permalink
Post by Olivier Miakinen
Cela semble vouloir dire que le script PHP qui fait le select « se
considère » en ISO-8859-1. Il manque peut-être l'instruction suivante
header('Content-Type: text/html; charset=UTF-8');
Bien tenté mais non.

La bonne nouvelle, c'est que j'ai trouvé le soucis: je faisais un
htmlentities(), c'est lui qui fait un utf8_encode() supplémentaire.
Bêtement, je n'avais pas pensé que le jeu de caractères par défaut est
ISO et non pas UTF-8.
--
Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu
Réseau IRC Francophone: http://www.crazy-irc.net
Continuer la lecture sur narkive:
Loading...