Problème d'encodage UTF8 PHP & MySQL
Bonjour à tous,
cela fait plusieurs heures que je suis bloqué sur l'encodage de mes caractères.
En effet, il me faut enregistrer des infos sur des clients comme leur nom et prenoms depuis un formulaire, et dans une BDD MySQL.
C'est pourquoi j'ai besoin d'un encodage UTF8.
-Toutes les pages de mon site sont encodées en UTF8 (j'utilise Wordpress et il est configuré par défaut en UTF8)
- Toutes les pages "_post" (envois de requêtes PHP) sont encodées en "AINSI as UTF8" selon N++ (sans BOM). (j'ai essayé en UTF8 pur mais ca ne marche pas mieux)
- Ma base de donnée, mes tables, et tous les champs sont en utf8_general_ci. Sans exception.
- Lors de la connexion à ma BDD via PDO je renseigne l'argument suivant :
Code:
$bdd = new PDO('mysql:host=;dbname=', '', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
J'ai également essayé en ne faisant qu'une simple requête SET NAMES après la connexion, sans succès.
Resultat :
Lorsque j'écris un 'é' dans le champ 'nom' de mon formulaire, Phpmyadmin affiche 'é'. Pourtant si je modifie directement le champ via un UPDATE dans myadmin, le 'é' est prit en compte.
Ce qui prouve que le problème n'est PAS la BDD.
J'utilise htmlidentities() avec pour argument UTF-8, et lorsque je fais un 'echo $nom' dans ma page formulaire_post.php qui envoie les requetes a ma BDD, le navigateur m'affiche bien 'é'.
Ce qui prouve que le problème n'est PAS le code php.
Mon doctype est en XHTML Strict et j'utilise bien la balise meta suivante :
Code:
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
Ce qui prouve que le problème n'est PAS le XHTML.
Il ne reste plus que l'envoi de requête via PDO, pourtant, comme je l'ai dis plus haut j'utilise SET NAMES à chaque connexion.
Pour finir, je certifie avoir bien lu votre F.A.Q dédié a ce problème :
http://php.developpez.com/faq/sgbd/?...ql#mysql-utf-8
Il ne m'a néanmoins été d'aucun secours.
En espérant que vous trouverez mon erreur... Merci.