Les Allergies
Alimentaires
Posez votre question Signaler

Base MySQL et caractères spéciaux [Résolu]

fab1105 118Messages postés 4 août 2009Date d'inscription 17 juin 2010Dernière intervention - Dernière réponse le 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.
Lire la suite 

Base MySQL et caractères spéciaux »

8 réponses
Réponse
+2
moins plus
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 é.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

As-tu bien dans tes pages web la balise meta :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Pour la base, il ne suffit pas que tes tables soient en utf-8, il faut aussi le signaler à chaque connexion grâce à une requête "SET NAMES UTF8" ?
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour ta réponse.

Oui il y a bien sur ma page web la balise meta
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Pour la requête "SET NAMES UTF8", peut tu m'en dire plus sur son utilisation? Je ne la connaissais pas.

Merci.
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour ces précisions.
J'ai fait un mysql_query("SET NAMES UTF8");
juste après la connection à la table et le problème des é è à ù est bien résolu ! Merci beaucoup!

Cependant les "" se transforment toujours en ""

Aurais-tu une idée à me proposer pour résoudre ce dernier petit problème ?
Ajouter un commentaire
Réponse
+0
moins plus
Les quoi se transforment en quoi ?
Ajouter un commentaire
Réponse
+0
moins plus
Les guillemets " " se transforment en caractères bizarres. J'avais fais un copier coller pour te les montrer, mais apparemment le forum de comment ca marche est bien programmé, il les a retranscrit en guillemets " " .

Mais j'ai trouvé la solution, j'ai remplacé htmlspecialchars par strip_tags et ça fonctionne à merveille!!!

Merci encore pour "SET NAMES UTF8" , sans ça je serai encore en train de chercher.

Merci beaucoup!
Ajouter un commentaire
Réponse
+0
moins plus
Les guillemets se transformaient sûrement en & quot; mais c'est normal, c'est toi qui le demandes avec la fonction htmlspecialchars. Elle sert (entre autres) à ça :-)
Ajouter un commentaire
Réponse
+0
moins plus
Ah oui , ben tu m'en apprends beaucoup aujourd'hui :-)

Merci encore pour tout !

A+
Ajouter un commentaire
Ce document intitulé « Base MySQL et caractères spéciaux » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?