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 :

Encodage des caractères spéciaux [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 120
    Par défaut Encodage des caractères spéciaux
    Bonjour à tous,

    Je rencontre un soucis au niveau des données de ma base et de mon script.

    Tous les enregistrements qui comportent un accent sont "cassés". Je ne comprends pas pourquoi ça plante. Par exemple, le mot "Comité" devient "Comit�". Aucune des fonctions d'encodages ne fonctionnent.

    Tous les interclassements sont en UTF-8 (connexion mysql et tables), et toutes mes pages sont en UTF-8 également (header et file encoding).

    Auriez-vous une idée, s'il vous plait ?

    Merci par avance

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Quand tu visualises tes données en base avec un outil comme MySql Workbench, tu vois des hiéroglyphes ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 120
    Par défaut
    Via le logiciel "Mysql Query Browser", les caractères sont bons.

    Par contre, un "print_r" affiche des caractères moches

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Problème PHP :
    essaies avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql_set_charset("utf8",$link);
    // ou
    mysql_query("SET NAMES 'UTF8'");
    et pour PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $cnx = new PDO(
      "mysql:host=$host;dbname=$db", 
      $user, 
      $pass, 
      array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
      )
    );
    Vérifies bien qu'absolument tout est encodé UTF-8 sans BOM

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 120
    Par défaut
    Le fait d'ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_set_charset('utf8',$this->link);
    fonctionne parfaitement !!!

    Un grand merci !!

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Problème PHP :
    essaies avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql_set_charset("utf8",$link);
    // ou
    mysql_query("SET NAMES 'UTF8'");
    et pour PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $cnx = new PDO(
      "mysql:host=$host;dbname=$db", 
      $user, 
      $pass, 
      array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
      )
    );
    Vérifies bien qu'absolument tout est encodé UTF-8 sans BOM
    tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "mysql:host=$host;dbname=$db;charset=utf8"
    (en plus du SET NAMES) comme ça on est sur,
    malheureusement mysql_set_charset et charset dans dan non sont pas toujours dispo, par contre ce n'est pas le meme effet qu'un SET NAMES, puisqu'il agit aussi sur l'échappement

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 120
    Par défaut
    Bon à savoir !!

    Merci pour vos conseils

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

Discussions similaires

  1. [eCommerce] Encodage des caractère spéciaux
    Par kidboy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 16/12/2010, 16h17
  2. Encodage des caractères spéciaux
    Par ambe_fr dans le forum Flex
    Réponses: 0
    Dernier message: 22/07/2010, 14h44
  3. [Encodage] Que pensez-vous de (é => é => é) encodage des caractères spéciaux ?
    Par xess91 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/05/2010, 14h30
  4. Probleme d'encodage des caractères spéciaux
    Par pacoulitou24 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 20/06/2006, 16h47
  5. Réponses: 15
    Dernier message: 24/02/2006, 14h17

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