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 :

UTF-8, différence entre mon site et phpmyadmin


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Points : 264
    Points
    264
    Par défaut UTF-8, différence entre mon site et phpmyadmin
    Bonjour,

    Alors j'ai tout en UTF-8. Mes fichiers php, ma base de données, mes tables avec leurs champs.

    Dans un formulaire php si j'insère le caractère UTF-8 "€" ça l'insère bien en UTF-8 puisque je peux l'afficher sans problème sur une autre page.

    Par contre phpmyadmin 4.6.0 ne m'affiche pas € ce qui m'empêche de modifier la base depuis phpmyadmin.

    Ensuite, je peux insérer le caractère € dans cette table depuis phpmyadmin par contre sur mon site j'aurais d'affiché : �

    J'ai ajouté SET NAMES utf8 dans la fonction pour me connecter à la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function get_mysql() {
      global $db_domain, $db_user, $db_password, $db_database ;
      $mysqli = new mysqli($db_domain, $db_user, $db_password, $db_database) ;
      mysqli_query("SET NAMES utf8") ;
      return $mysqli ;
    }
    Voici le résultat pour vérifier l'encodage par défaut de ma table dbtest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "dbtest"
    Qui me retourne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    default_character_set_name 
    utf8
    Et le champs de cette table est bien en UTF-8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    user_firstname  varchar(30)     utf8_swedish_ci         Yes     NULL


    Je ne sais plus où vérifier ! Ça vient de mon code, de mes fichiers, de ma base ou de phpmyadmin ?

    Merci pour votre aide.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut

    Il est recommandé d'utiliser mysqli_set_charset plutôt que "SET NAMES utf8".

    Le caractère � que tu reçois, indique que les données ont été enregistrées au format ISO, et le navigateur les affiche en pensant avoir affaire à de l'UTF-8 (quand on reçoit des caractères é, "î", "Ã"..., c'est l'inverse).

    As-tu mis le header header('Content-type: text/html; charset=UTF-8'); en haut de tes pages php ?


    Pour des nouveaux développement tu devrais plutôt utiliser PDO, c'est plus pratique et plus agréable à écrire et à lire (mysqli est normalement utilisée pour mettre à jour d'anciens sites mysql).

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Points : 264
    Points
    264
    Par défaut
    Merci Arciweb,

    En utilisant mysqli_set_charset() ; je n'ai plus ce soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function get_mysql() {
      global $db_domain, $db_user, $db_password, $db_database ;
      $mysqli = new mysqli($db_domain, $db_user, $db_password, $db_database) ;
      mysqli_set_charset($mysqli, "utf8") ;
      return $mysqli ;
    }
    Il va falloir que je me renseigne comment passer en PDO, il va falloir que je potasse un peu.

    Encore merci Arciweb.

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

Discussions similaires

  1. différence entre gestion site web et suivi de site web?
    Par secondechance dans le forum Débuter
    Réponses: 0
    Dernier message: 15/02/2009, 15h39
  2. Quelques différences concernant mon site perso avec IE
    Par Olivier Regnier dans le forum Mise en page CSS
    Réponses: 18
    Dernier message: 28/03/2008, 18h19
  3. Réponses: 3
    Dernier message: 26/06/2007, 21h02
  4. [phpMyAdmin] lien entre mon code et phpMyAdmin sous xampp
    Par temperature dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 15/04/2006, 14h12

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