Base MySQL et caractères spéciaux

Résolu/Fermé
fab1105 Messages postés 114 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 17 juin 2010 - 27 août 2009 à 13:47
fab1105 Messages postés 114 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 17 juin 2010 - 27 août 2009 à 15:01
Bonjour,


J'ai une base MySQL en local avec phpmyadmin et lorsque je récupère les données d'un formulaire pour les insérer dans la base de données, les é è à deviennent des é è à .

J'insères les données dans la table de cette manière :

$contenu = mysql_real_escape_string(htmlspecialchars($_POST['contenu']));
$contenu = nl2br($contenu);

et ma page web est en utf-8 et ma base en utf_8_unicode_ci.

Quelqu'un aurait-il une solution pour que ces caractères ne posent plus de problème ?

Merci pour vos réponses.
A voir également:

8 réponses

Je l'ai trouvée il y a quelques semaines dans le manuel SQL en lisant le chapitre sur le codage des caractères parce que j'avais le même problème que toi.
Disons que même si tu déclares une table en utf8, mysql considère que les données que tu lui envoies sont en iso-machin-truc. Quand tu envoies une donnée vers une table utf8, il traduit donc d'iso-machin-truc en utf8 pour enregistrer dans ta table. Quand tu as saisi un é dans une page en UTF8, ce sont donc deux codes (C3 A9) qui sont envoyés à la base.
La base croit qu'il s'agit de deux caractères iso C3 et A9. Ces caractères correspondent (en iso) à Ã et ©. C'est ce que te montre PHPmyAdmin
SET NAMES UTF8 sert à dire à mysql que les données qu'on lui envoie (et celles qu'il doit nous renvoyer) sont en uft8. Dans ce cas, quand il reçoit C3 suivi de A9 c'est bien un seul et même caractère é.
2