Rechercher : dans
Par :

Base MySQL et caractères spéciaux

Dernière réponse le 27 aoû 2009 à 15:01:07 fab1105, le 27 aoû 2009 à 13:47:54 
 Signaler ce message aux modérateurs

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.

Configuration: Windows Vista
Firefox 3.5.2

Meilleures réponses pour « Base MySQL et caractères spéciaux » dans :
[CCM] Utiliser des caractères spéciaux VoirVous pouvez utiliser des caractères spéciaux dans vos messages sur les forums de CCM. Vous pouvez: Soit utiliser la table de caractères Windows (charmap.exe) et copier-coller les caractères dans le message. Soit utiliser les entités...
Oracle - Echappement de caractères spéciaux VoirPour certaines requêtes SQL, nous avons besoin de rechercher des chaînes de caractères contenant des caractères spéciaux tels que '%' Dans l'exemple suivant, qui est faux, le besoin est de trouver les enregistrements contenant au milieu le...
Utiliser des accents et autres caractères spéciaux VoirDans la plupart des langages de programmation, on ne peut utiliser directement les accents et autres caractères non-anglosaxon. La solution est l'unicode, une sorte de code universel. Par exemple pour afficher la chaine de caractères : " là, ça...
Caractères spéciaux HTML VoirCodage des caractères spéciaux Le standard HTML demande de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Il faut pour cela utiliser un codage particulier. Pour...

1

le père, le 27 aoû 2009 à 14:12:06

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" ?

Répondre à le père

2

fab1105, le 27 aoû 2009 à 14:15:50

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.

Répondre à fab1105

3

le père, le 27 aoû 2009 à 14:32:50
  • +1

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

Répondre à le père

4

fab1105, le 27 aoû 2009 à 14:40:18

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 ?

Répondre à fab1105

5

le père, le 27 aoû 2009 à 14:42:27

Les quoi se transforment en quoi ?

Répondre à le père

6

fab1105, le 27 aoû 2009 à 14:49:46

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!

Répondre à fab1105

7

le père, le 27 aoû 2009 à 14:53:41

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

Répondre à le père

8

 fab1105, le 27 aoû 2009 à 15:01:07

Ah oui , ben tu m'en apprends beaucoup aujourd'hui :-)

Merci encore pour tout !

A+

Répondre à fab1105
Collection CommentÇaMarche.net