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

PHP & Base de données Discussion :

Bug encodage utf-8 et ISO [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut Bug encodage utf-8 et ISO
    Bonjour,
    j'ai besoin d'aide pour un problème d'encodage de mes données...
    Malgré la lecture de nombreux posts et autres tutos sur le sujet, j'ai besoin d'un éclairage 1 peu + poussé sur le sujet...
    Donc, j'ai des données qui s'enregistre en base sous la forme :
    Hors série N°1
    et qui vont s'afficher correctement (ici : Hors-série N°1 )
    et d'autres données qui vont s'enregistrer correctement en base :
    Végétal
    et qui par contre vont s'afficher :
    V�g�tal


    Sur ce que j'ai pu comprendre au fil de mes recherches, pour mon premier cas les données sont enregistrées en ISO et affichées en utf-8, et pour le second cas, elles sont enregistrées en utf-8 et affichées en ISO...?
    Mais je ne sais pas comment faire en sorte que toutes mes données soient enregistrées en utf-8 et affichées en utf-8 (si c'est qu'il faut faire )
    Au niveau de la base : Est-ce qu'il faut toucher à la "structure" de la base ?
    Au niveau de Php : Est-ce qu'il faut gérer les enregistrements avec les méthodes utf8_encode et utf8_decode ?
    Et j'ai cru lire qu'une fois les données enregistrées dans tel format, ce n'est pas possible de les rechanger de format ? (comme je suis en phase de test, je n'ai pas beaucoup de données et ce ne serait pas un pb de vider mes tables pour ré-enregistrer d'autres données)

    Merci d'avance pour vos éclaircissements

  2. #2
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 139
    Points
    139
    Par défaut
    C'est marrant je viens de répondre à un post similaire,

    en bref, il faut prendre une décision et harmoniser le tout, je te laisse lire :

    http://www.developpez.net/forums/m3581117-6/

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce qu'il faut gérer les enregistrements avec les méthodes utf8_encode et utf8_decode ?
    Comme le dit Delete, c'est la moins bonne chose a faire.
    Il faut choisir un format et s'y tenir.

    On ne peut pas toujours choisir les paramètres du serveur mais il suffit de bien définir :
    - dans quel encodage sont ecrits tes fichiers PHP
    - dans quel encodage tu declares ton contenu html.
    - dans quel encodage tu fais ta connexion avec la base de donnée.

  4. #4
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut
    Ok merci à vous 2.
    Mais pour être + précis, comment spécifier l'encodage Php et où ? Et pareil pour html et "connexion à la Bdd" (d'ailleurs, qu'est-ce que tu entends par là stp ? C'est au niveau de la connexion où au niveau des tables elle-même ?
    Et que faire par rapport au "pb de navigateur" qui "croit" afficher de l'ISO alors que c'est de l'utf-8, ou l'inverse ?
    Je comprends votre post comme quoi tout doit être "synchro", mais comme je patauge un peu (doux euphemisme ), est-ce que vous pourriez être 1 peu + précis svp...

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand tu écris un fichier, c'est dans un certain encodage qui est défini par ton éditeur de texte, en général ISO-8859-1 ou UTF-8 pour nos caractères romains.
    Si tu ne trouves pas cette option dans ton editeur, tu peux l'encodage de tes fichiers avec notepad++.

    Tu dois également prendre le soin d'indiquer à ton navigateur dans quel encodage sont les fichiers qu'il reçoit avec une balise à placer dans la section <head>
    par exemple pour UTF-8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
    Dans le cas contraire il peut soit se conformer aux indications du serveur web ou essayer de deviner lui même.

    Pour la base de donnée, elle reçoit et envoie les données dans un certain encodage.
    Par exemple par défaut sous mysql c'est Latin1.
    Il faut donc lui specifier si on veut travailler en UTF8 avec mysql.

  6. #6
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut
    Merci Sabotage.
    Par contre, SET NAMES="utf-8", tu l'utilises à quel moment et à quelle endroit ?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est une requête a executer apres la connexion.
    Elle fixe le paramètre pour tous les échanges ayant lieu ensuite dans cette connexion.

    http://php.developpez.com/faq/?page=mysql#mysql-utf-8

    Et attention il n'y a pas de tiret "UTF8"

  8. #8
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut
    Ah d'accord.
    Bon, normalement ça devrait être bon avec tout ça...
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture de fichier: encodage utf-8 et iso-8859-1
    Par WindRider_ dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2009, 10h23
  2. Encodage UTF-8 et ISO avec file_get_contents()
    Par dombili dans le forum Langage
    Réponses: 8
    Dernier message: 05/10/2008, 19h42
  3. [1.x] Encodage UTF-8 et ISO-8859-1
    Par Alahel dans le forum Symfony
    Réponses: 8
    Dernier message: 09/09/2008, 11h52
  4. Flux RSS avec PHP : encodage UTF-8 vers ISO-8559-1
    Par eric437 dans le forum Langage
    Réponses: 1
    Dernier message: 03/08/2008, 20h56
  5. encodage UTF-8 vers ISO-8859-1
    Par taouja dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 13/04/2007, 11h03

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