IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

phpMyAdmin et UTF-8


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Par défaut phpMyAdmin et UTF-8
    Bonjour,

    J'ai un soucis avec PhpMyAdmin (2.8.2): j'ai une base Mysql (5.0.22) dont les données sont en utf-8. Malheureusement je n'arrive pas à configurer PhpMyAdmin pour faire en sorte que
    1/ les données lues via PhpMyAdmin soient correctement affichées (e.g. pas de de Ä©)
    2/ les données sauvées via PhpMyAdmin soient effectivement sauvées en utf-8 dans la base

    J'ai trouvé énormement de posts sur le net à ce sujet mais aucune réponse au point que je me demande si c'est possible...

    Merci pour votre aide!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Par défaut Même soucis
    Effectivement l'utf8 avec phpmyadmin c'est un gros soucis, je rencontre le même problème que toi malgré une recherche approfondie j'ai pas réussi à corriger cela. Donc je serai attentif si tu arrives à remédier à cela.

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    même problème. phpmyadmin n"insère pas, n'affiche pas et ne sauvegarde pas en utf-8. Je suis obligé d'insérer mes données depuis un script php et la c'est ok. Mais même comme ca les caractères restent corrompu à l'affichage dans phpmyadmin.

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 365

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 24
    Par défaut
    Merci pour le lien vers cet excellent article, mais je l'ai déjà lu.

    Depuis hier, j'ai dû lire des centaines de tutos ou autres sur le sujet.

    Actuellement, je n'ai toujours pas la réponse à mon problème.

    Mais chez vous, ça fonctionne ?

    -Je créé une nouvelle table (charset utf8 et collation utf8_general_ci)
    -Je créé un champ "nom"
    -j'insère quelques enregistrements (a, b, c, d, e, é, f, )
    -Je lance un SELECT nom ORDER BY nom

    Et ça foire... j'obtiens a, é, b, c, d, e, f

    Il est où, le problème
    Là, j'en ai vraiment marre.

    Une question : quel IDE pour administrer MySQL ? Avec MySQL Administrator et Query Browser, si je saisi "é" dans une table utf8, l'insertion ne semble pas être en utf-8 (comme avec PHPMyAdmin)....

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Par défaut
    Phpmyadmin gère parfaitement l'utf-8. ;-)

    Ce qui ne gère pas l'utf-8 ici, c'est votre code PHP à mon avis. Avez-vous pensé à faire un appel sql du type mysql_query("SET NAMES 'UTF8'") dans votre code avant d'insérer ou de lire des données ?
    Si vous utilisez un framework qui s'occupe de la connexion à votre place, cette valeur est normalement configurable (exemple : 'encoding' => 'utf8' dans cakephp quand on configure la connexion).

    Si vous ne l'avez pas fait, ce que vous insérez/lisez n'est pas en utf-8, et c'est phpmyadmin qui a raison, en vous affichant les données réellement écrites en base.

    Surtout à ne pas faire ... ça force phpmyadmin à lire les données de façon erronée.

    Pour le problème de Dimitri, je vais tester chez moi si ça me donne le même résultat.
    Edit : Après test, ça fonctionne bien chez moi. Tu fais ton select dans phpmyadmin (pas modifié par ce qui est écrit dans le post plus haut) ? Dans ton code php en ayant précisé le set names ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut Une solution !
    Merci pour vos infos, qui m'ont permis de trouver une solution pour le même problème : mes accents é, è, à, ç et autres étaient remplacés par des carrés, dans le site ouèbe chez Free (http://sivom.ambert.free.fr/), que je suis en train de créer. Je travaille avec Windows Vista, EasyPHP 2.0b1, phpMyAdmin 2.9.11, et chez free.fr avec phpMyAdmin - 2.11.3. Par défaut, j'ai positionné tous les choix à utf8_general_ci, lorsque c'était demandé, et j'ai même choisi UTF-8 dans les exports en CSV, car mes données (noms de villes et communes, par exemple) sont dans un tableau d'Open Office 2.2. Mais toujours des carrés à la place des accents.
    Grâce à ce forum, j'ai trouvé une solution (peut-être pas la meilleure), mais qui me convient pour le moment.

    Dans Open Office 2.2 :
    - tableau.calc de Open Office à l'écran
    - export de la feuille courante en .csv : fichier, enregistrer sous, type .csv, cocher éditer les filtres, choisir 1252-Win ou Latin1
    - ne pas oublier séparateur de champ et séparateurs de texte
    - on obtient toto.csv

    Dans phpMyAdmin 2.9.1.1 :
    - la table ad hoc existe (toto), mais vide
    - choisir Importer
    - parcourir pour trouver toto.csv
    - jeu de caractères du fichier : latin1
    - ne pas oublier nombre d'enregistrements et option CSV
    - Exécuter

    - choisir Afficher, pour voir les données arrivées dans la table ad hoc ; là les accents sont bien visibles : é, è, à, °, ç, etc
    - choisir Exporter
    - cocher SQL, compatibilité NONE, cocher Transmettre
    - Exécuter
    - on obtient toto.sql

    - choisir Supprimer : oui
    - choisir Importer
    - parcourir pour trouver toto.sql
    - jeu de caractères du fichier : latin1 (ou Windows 1252)
    - ne pas oublier option sql, compatibilité NONE
    - Exécuter

    - choisir Afficher, pour voir les données arrivées dans la table ad hoc : là les accents s'affichent Ä© et autres à ou ° ; mais quand je consulte mon site en local (EasyPHP, Web local), les accents sont bien écrits é, à et ° :

    Chez free.fr avec phpMyAdmin - 2.11.3 :
    - éventuellement supprimer la table ad hoc (toto), si elle existe déjà
    - choisir Importer
    - parcourir pour trouver toto.sql
    - jeu de caractères du fichier : utf8
    - ne pas oublier option sql, compatibilité NONE
    - Exécuter

    - choisir Afficher, pour voir les données arrivées dans la table ad hoc : là les accents s'affichent Ä© et autres à ou ° ; mais quand je consulte mon site en vrai avec mon navigateur (IE 7 ou Safari 3.0.4), les accents sont bien écrits é, à et ° : re-

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut
    Citation Envoyé par Xargos Voir le message
    Phpmyadmin gère parfaitement l'utf-8. ;-)

    Ce qui ne gère pas l'utf-8 ici, c'est votre code PHP à mon avis. Avez-vous pensé à faire un appel sql du type mysql_query("SET NAMES 'UTF8'") dans votre code avant d'insérer ou de lire des données ?
    Si vous utilisez un framework qui s'occupe de la connexion à votre place, cette valeur est normalement configurable (exemple : 'encoding' => 'utf8' dans cakephp quand on configure la connexion).

    Si vous ne l'avez pas fait, ce que vous insérez/lisez n'est pas en utf-8, et c'est phpmyadmin qui a raison, en vous affichant les données réellement écrites en base.



    Surtout à ne pas faire ... ça force phpmyadmin à lire les données de façon erronée.

    Pour le problème de Dimitri, je vais tester chez moi si ça me donne le même résultat.
    Edit : Après test, ça fonctionne bien chez moi. Tu fais ton select dans phpmyadmin (pas modifié par ce qui est écrit dans le post plus haut) ? Dans ton code php en ayant précisé le set names ?
    On doit pas avoir la même version parce j'ai beau tout mettre en utf-8, (interclassement table, interclassement attribut, au démarrage de pma, et même vérifier si Firefox est en utf-8 et si le code source affiche bien en utf-8)
    mais pma se borne à afficher des caractères bizarres en lieu et place de caractères spéciaux en utf-8. Or c'est bien de l'UTF-8...

    Bizarrement la solution présentée (bien qu'ordonnant d'afficher le contenu en latin1) permet d'afficher ET d'entrer de nouvelles valeurs en UTF-8....

    J'en perds mon latin....
    si j'encode le résultat en Json, il me code le caractère é : \u00e9 ce qui est bien de l'unicode

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Par défaut
    Même soucis, tous mes paramètres sont bien configurés. L'ajout dans la BDD avec PHP se fait bien en utf8 mais phpMyAdmin lit les données en iso. Et aucun souci lors de l'extraction de la base avec PHP.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 27
    Par défaut
    Merci beaucoup !!!

    J'ai pu résoudre ce problème grâce à cette commande que j'utilise maintenant après avoir ouvert chaque connexion :-)

    SET NAMES 'UTF8'

  11. #11
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    tu fais cette commande ou?

    Merci d'avance

    SPke

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut
    Citation Envoyé par isarian Voir le message
    tu fais cette commande ou?

    Merci d'avance

    SPke
    Si c'est en php, je fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         $link = mysql_connect ($host, $user, $password) ;
         if (!$link) die("Impossible de se connecter à MySql");
         mysql_select_db ($database) or die ("Pb");
         mysql_query("SET NAMES 'utf8'") ;

Discussions similaires

  1. UTF-8, différence entre mon site et phpmyadmin
    Par defacta dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/07/2016, 18h39
  2. [phpMyAdmin] UTF-8 et phpMyAdmin : problèmes d'encodage
    Par -DeN- dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 29
    Dernier message: 29/05/2016, 11h27
  3. [MySQL] Encodage UTF-8 avec phpMyAdmin
    Par matpush dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 30/12/2009, 09h30
  4. [MySQL] Encodage UTF-8 et phpMyAdmin
    Par Hell dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/06/2009, 15h57
  5. Réponses: 3
    Dernier message: 11/04/2007, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo