PHP et MySQL en full UTF8

Le
CrazyCat
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #19272

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
Le #19270
Olivier Miakinen wrote:
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');


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

Publicité
Poster une réponse
Anonyme