Problème d'encodage de caractères avec bdd
Guillaume
-
creadiff Messages postés 445 Date d'inscription Statut Membre Dernière intervention -
creadiff Messages postés 445 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Problème d'encodage de caractères avec bdd
- Encodage ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Un mot de passe avec 8 caractères exemple - Guide
- Caracteres speciaux - Guide
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
Comment faire pour qu'ils soient écrit correctement dans ma base ?
Merci d'avance
Guillaume
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
http://web-o-blog.blogspot.com/2011/04/utf-8-with-phpmysql.html
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
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
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 ?
- 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 ?
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.
$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.
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 : ©Ã©Ã©
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 : ©Ã©Ã©
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().
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().