Gestion des caractères accentués en PHP

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 : Gestion des caractères accentués en PHP

Re: Gestion des caractères accentués en PHP

par @rthur » 16 oct. 2014, 12:59

Bonjour,

A noter également l'existence de la fonction PHP html_entity_decode() :
http://fr.php.net/html_entity_decode

Re: Gestion des caractères accentués en PHP

par ynx » 16 oct. 2014, 09:20

Salut,

Les caractères du genre "é" en bdd proviennent surement du fait que tu utilises htmlentities() ou htmlspecialchars() sur tes données avant l'insertion en bdd, ce qui n'est pas recommandé.

Le seul traitement utile à effectuer sur des variables avant l'insertion en bdd est d'échapper les caractères spéciaux de la bdd pour éviter les injections sql. Deux solutions avec PDO :
- soit en utilisant des requêtes préparées avec des paramètres
- soit en utilisant la méthode PDO::quote()

Bonne journée

Gestion des caractères accentués en PHP

par patrickg80 » 15 oct. 2014, 20:01

Bonsoir Tout le monde,

Je viens vers vous avec beaucoup d'espoir de trouver satisfaction à mon problème qui me terrorise depuis bientôt plus d'une semaine. Actuellement je suis entrain de supprimer une Application PHP sur un environnement Windows avec comme serveur web XAMPP 1.8.1-0 et PostgreSQL comme serveur de base de données. L'accès à ma base de données se fait via l'interface PDO. Le problème est le suivant : toutes les chaines de caractères que j'enregistre à travers mes formulaires qui contiennent des caractères accentués s'enregistrent dans ma base de données de manière très bizarre. Par exemple le "é" s'affiche ainsi "é". Après avoir fouillé sur Internet et vu quelques éléments de réponses qui ne m'ont pas du tout aidé, je me retourne vers vous en espérant obtenir très rapidement une solution à mon problème.

A titre d'exemple des solutions trouvées sur le net qui n'ont pas marchées :
$db->exec('SET CHARACTER SET UTF8');