Page 1 sur 1

PDO - Problème d'encodage lors de l'écriture dans la base de données

Posté : 07 sept. 2015, 15:26
par jbrey33
Bonjour,

désolé si cette question a déjà été traité mais je ne trouve rien sur le foruml

Pour des raisons de sécurité (sql injection) j'ai décidé de passer par PDO pour mes requête sur une base MySql
La base est encodée en UTF-8
Le page du formulaire est encodé en UTF-8
L'entête de la page du formulaire comporte les Méta suivants :
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

Concernant PDO j'indique les éléments suivants lors de l'initialisation
$connexion = new PDO('mysql:host=localhost;port=3306;dbname=truc', 'root', '');
$connexion->exec("SET CHARACTER SET utf8");

Dés que je saisie un mot avec un accent il est mal encodé dans MySql : exemple "10 rue du chêne vert"
Si je recharge le formulaire avec les informations enregistrées dans la base j'ai bien "10 rue du chêne vert"
Si je corrige directement dans la base de données dans le formulaire il apparaît "10 rue du ch�ne vert"

Je dois avouer que je tourne en rond sans trouver...

Si vous avez des idées je suis preneur :)

Jean Baptiste
PS : Je précise que je rencontre ce problème uniquement avec l'utilisation de PDO. Si j'utilise mysql_query() je n'ai pas ce souci...

Re: PDO - Problème d'encodage lors de l'écriture dans la base de données

Posté : 07 sept. 2015, 17:27
par J-Nicolas
J'ai déjà perdu beaucoup de temps avec ces questions d'encodage. Ce qui m'a sauvé fut l'ajout de

'SET NAMES "utf8"'

Mais, sinon, la solution simple est de ne pas employer PDO (que je ne connais pas).

Re: PDO - Problème d'encodage lors de l'écriture dans la base de données

Posté : 07 sept. 2015, 18:00
par jbrey33
Bonjour et merci à vous

Paradoxalement votre réponse m'a fait réalisé mon erreur :)
Je n'appelais pas le bon fichier .inc et du coup le SET NAMES n'était pas pris en compte !!!!
Concernant PDO on me l'a chaudement recommandé notamment pour des raisons de sécurisation des connexions

Bien à vous
Jean Baptiste