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
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
A voir également:
- Problème d'encodage de caractères avec bdd
- Encodage ascii - Guide
- Caractères spéciaux symboles clavier - Guide
- Caractères spéciaux - Guide
- Clavier mac caractères spéciaux - Guide
- Exemple de mot de passe à 8 caractères - 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
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
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
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
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
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 ?
- 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 : ©Ã©Ã©
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
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().
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().
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
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.