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 :

Problème de base avec l'encodage UTF-8 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    phpéteur
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : phpéteur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Problème de base avec l'encodage UTF-8
    Bonjour à tous,

    J'aurais vraiment besoin de votre aide...

    Je n'ai pas d'expérience sur l'utf-8, d'habitude je travaille en latin1. Seulement voilà, je dois intégrer le grec dans une de mes tables, et je me retrouve confronté à quelques soucis dont je n'arrive pas à me dépêtrer.
    Pour faire simple et tenter de comprendre, j'ai recréé une table minimaliste et je fais des tests dessus. Je vous explique :

    J'ai créé une base mysql en interclassement utf8_general_ci
    Dans cette base j'ai créé une table clients avec une colonne id et une colonne nom, le tout en interclassement utf8_general_ci
    Avec PhpMyadmin j'insère des caractères spéciaux, des accents, du grec, tout se passe bien
    J'ai fait un script php pour faire les mêmes insertions, et là ça commence à être bizarre : dans PhpMyAdmin lorsque j'affiche, les caractères spéciaux apparaissent mal, les "é" par ex en "é")
    Mais si je lis le contenu de la table avec php dans une page html avec balise meta en utf-8, là c'est le contraire : ce que j'ai inséré avec PhpMyAdmin apparait mal (les caractères spéciaux remplacés par des carrés) et ce que j'ai inséré avec php apparait de manière impeccable.
    Donc je me dis : c'est surement un bug d'affichage dans PhpMyAdmin... Sauf que PhpMyAdmin insère affiche néanmoins impeccablement le grec qui nécessite pourtant bien l'utf8...

    Du coup autre problème lié au premier, je ne peux pas faire de recherche sans accents sur les insertions faites avec PHP. Par exemple si je rentre "André" et "Andre", et que je fais une recherche sur "andre", ça ne me sort que Andre et pas André. Alors que sur les insertions faite via PhpMyAdmin ça fonctionne bien...!

    J'ai fait plein de recherches un peu partout sur le net, j'arrive vraiment pas à trouver une réponse qui solutionne mon problème, qui parait pourtant basique....
    Auriez-vous une idée??

    Merci d'avoir pris le temps de lire
    Fabien

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Le jeu de caractères de la connexion entre ton script php et mysql n'est pas configuré, donc la configuration par défaut est utilisé. En général, c'est latin1.
    Donc mysql considère que ce qu'envoie le script php est en latin1, le reçoit, le transforme en utf-8 (puisque la colonne a un interclassement utf8_general_ci) et le stocke.
    Inversement quand mysql envoie des données et effectue la transformation vers latin1.

    Configure le jeu de caractères après la création de la connexion en utilisant mysqli_set_charset($link, 'utf8') par exemple, si tu utilises l'extension mysqli.

    edit: correction pour les arguments à passer à mysqli_set_charset()
    Dernière modification par rawsrc ; 22/10/2014 à 18h35. Motif: Balises [codeinline][/codeinline]

  3. #3
    Futur Membre du Club
    Homme Profil pro
    phpéteur
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : phpéteur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Un grand merci à toi!

    C'était exactement ça le problème : avec un mysql_set_charset('utf8') tout est rentré directement dans l'ordre.

    Merci beaucoup!

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

Discussions similaires

  1. Problème de base avec un Tstrings
    Par Dereck07 dans le forum Débuter
    Réponses: 5
    Dernier message: 31/01/2010, 21h38
  2. [tXSLT] XML+XSL=>XML mais avec un encodage UTF-8 différent de ce lui d'origine
    Par mathieu_r dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 13/01/2010, 15h12
  3. 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
  4. Utiliser la fonction fwrite avec un encodage UTF-8
    Par Mo_Poly dans le forum Langage
    Réponses: 4
    Dernier message: 30/01/2008, 22h19
  5. Problème de base avec Delphi
    Par Chaumel dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/04/2006, 08h58

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