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 :

L'eternel problème des accents [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Par défaut L'eternel problème des accents
    Bonjour,

    J'ai besoin de votre aide pour un problème d'encodage.

    Le problème :
    J'insere des données via formulaire dans un base mysql.
    Si dans l'interface web tout apparait normalement, dans la base les accents sont stockés comme des "ÉÀ".

    J'ai essayé moults combinaisons d'encodage et interclassement mais je ne m'en sors pas.

    Ma page de saisie comporte l'en-tête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    Ma connexion à mysql est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dbc = new PDO('mysql:host=localhost;dbname=' . $db . ';charset=UTF-8' ,$dblogin ,$dbpassword);
    J'ai essayé les interclassements utf8_unicode_ci et latin_swedish_ci pour le champ incriminé.
    Les tables sont indiquées comme interclassement latin_swedish_ci.
    La base indique les paramètres
    Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
    Interclassement pour la connexion MySQL:utf8_unicode_c

    Pourriez-vous me guide pour savoir comment corriger cela ?

    Merci
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #2
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Avec cette commande, tu peux changer les options par défaut de ta base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ALTER DATABASE ma_bdd DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci

  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
    Par défaut
    L'interclassement d'une base prévaut sur l'interclassement d'un champ ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    C'est l'interclassement choisi par défaut lorsque tu n'en définies pas un pour ton champ.

  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
    Par défaut
    Ba justement mes champs ont des interclassement définis : mais que je choisisse utf8_unicode_ci ou latin_swedish_ci, le resultat est le même : la base enregistre des ÉÀ
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Si lors des insertions il y a ces caractères étranges, il faut vérifier les données entrantes et les convertir en ISO ou UTF8.

  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
    Par défaut
    Solution trouvée :

    il faut utiliser la requete SET NAMES 'UTF-8'

    toutes les explications sur :
    http://www.envrac.org/index.php/2006...acter-encoding

    Même si je n'ai toujours pas compris pourquoi un "é" que j'enregistre et recupère normalement via PHP, est en fait mal rengesitré dans mysql.

    Merci pour tes réponses.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Problème des accents dans un fichiers text
    Par mo5andes dans le forum C#
    Réponses: 2
    Dernier message: 09/10/2009, 11h22
  2. [MySQL] Problème des accents
    Par jems87 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/02/2009, 20h50
  3. [CSV] Eternel problème d'accents
    Par tchoukapi dans le forum Langage
    Réponses: 15
    Dernier message: 04/04/2007, 11h06
  4. [XML][Flash] Problème d'encodage des accents
    Par JoN28fr dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 06/10/2006, 16h45
  5. Réponses: 11
    Dernier message: 16/12/2003, 19h58

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