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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PDO - Problème d'encodage lors de l'écriture dans la base de données

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

par jbrey33 » 07 sept. 2015, 18:00

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

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

par J-Nicolas » 07 sept. 2015, 17:27

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).

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

par jbrey33 » 07 sept. 2015, 15:26

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...