Problème d'encodage de caractères avec bdd

Fermé
Guillaume - 3 juil. 2011 à 18:46
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 - 6 juil. 2011 à 09:53
Bonjour,
J'ai fait un livre d'or avec base de donnée, et lorsque mon commentaire est enregistré dans la base de donnée, il n'est pas encodé comme il le faut. J'avais au début des caractère comme : ©Ã©Ã©. J'ai ensuite utilisé ce code pour remédier au problème :
$auteur=htmlentities($_POST['pseudo'],ENT_QUOTES,'utf-8');
et cette fois je n'ai plus les symboles que j'avais au début, mais les symbole type : é, J'aimerai cependant qu'il m'affiche les caractères correctement, et non pas les équivalences.
Au passage, lorsque je fait une requête directement sur phpmyadmin, je n'ai aucun soucis avec les é, è, à ... etc. donc le problème vient du script php j'imagine...

Si quelqu'un a une solution à mon problème, je lui en serais très reconnaissant,
Merci.

A voir également:

5 réponses

Problème à moitié résolu. J'arrive à afficher correctement avec un SELECT mes éléments sur ma page php, mais sur phpmyadmin ils restent avec ces code : ©Ã©Ã© .
Comment faire pour qu'ils soient écrit correctement dans ma base ?

Merci d'avance

Guillaume
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
Modifié par creadiff le 4/07/2011 à 01:22
Il y de nombreux paramètres à prendre en compte si l'on veut utiliser de l'UTF-8 sur son site... Petit tutoriel ici :

http://web-o-blog.blogspot.com/2011/04/utf-8-with-phpmysql.html
0
Merci,
Mais c'est au niveau de la base de donnée que ça ne va pas. quand j'enregistre dans ma base, je vois les symbole ©Ã©Ã© et quand je précise dans le script php que les variables sont en UTF-8 j'ai ces symbole là dans ma base de donnée : é qui sont les équivalences de "é" en html. Cependant, quand je fais un SELECT pour les afficher sur une page de mon site, je retrouve les caractères accentué comme il faut.
Mon seul soucis est phphmyadmin. J'ai pourtant précisé que ma table était en utf-8.

Merci de votre aide
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
5 juil. 2011 à 19:53
As-tu lu le tutoriel ? Il faut :

- exécuter la requête SET NAMES 'utf8' avant toute autre requête SQL

- préciser l'encodage des caractères dans l'éditeur

- envoyer l'en-tête HTTP correspondant à l'encodage désiré

Apparemment l'encodage des tables est correctement en place.
Pour ce qui est de préciser dans le script PHP que les variables sont en UTF-8, pourriez-vous expliquer de quoi il s'agit ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je parle de cette ligne de code :
$auteur=htmlentities($_POST['pseudo'],ENT_QUOTES,'utf-8');
avec ça j'obtient des symbole de ce type : & e a c u t e ; (sans les espaces bien sur).
alors qu'avec cette ligne de code :
$auteur=$_POST['pseudo'];
j'obtiens des caractère de ce type: ©Ã©Ã©

Je parle bien sûr de l'interface phpmyadmin.
0
Qu'est-ce que vous entendez par "préciser l'encodage des caractères dans l'éditeur " ?
J'ai fait la requete SET NAME 'utf8'
j'ai ensuite fait ma requête pour créer ma table et ses caractéristiques
dans "Interclassement" j'ai mis utf8_general_ci
Et dans l'entête de la page ou se situe la requete sql, j'ai bien le charset utf8.
Et avec ça j'ai les symboles : ©Ã©Ã©
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
Modifié par creadiff le 5/07/2011 à 23:07
Que éditeur utilisez-vous ? Je peux indiquer la manip' selon le logiciel.

NB : ne pas confondre les balises <meta /> en code HTML avec les en-têtes HTTP (à préciser dans le .htaccess par exemple).

NB 2 : c'est très dangereux d'insérer directement un enregistrement dans la base de données sans l'échapper (injection SQL). Il faut au moins utiliser la fonction addslashes().
0
Adobe Dreamweaver. Oui en effet j'ai confondu les balise <meta> avec le .htaccess. Quand vous parlez d'injection SQL, vous parler bien du script php ? Et que fait la fonction addslashes ?
Merci pour vos réponses.
0
Je viens de trouver ma réponse, addslashes() protèges les données. En fait j'utilise mysql_escape_string() c'est la même chose non ?
0
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 57
6 juil. 2011 à 09:53
mysql_escape_string utilise des entités HTML, ce qui rallonge les chaînes de caractères... mais ça marche aussi.
0