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 :

Quel charset pour les caractères accentués [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut Quel charset pour les caractères accentués
    Bonjour,

    j'utilise un script PHP pour rentrer mes données sur MySQL. Mais elles s'affichent par exemple comme cela dans MySQL : " L'école à " toto voulant dire " L'école à toto ".
    En PHP j'utilise les fonctions trim(), addslashes() et htmlentities() avant de mettre ses données dans ma table.
    La config que j'ai :

    • Editeur de texte NotePad++ encoder en format ANSI
    • Dans mon script PHP je ne spécifie pas de charset
    • Pour l'affichage de mes données dans ma page HTML, je ne spécifie pas de charset

    Je pense que le problème vient de l'insertion des données dans ma table car les données ne sont pas affichés comme je souhaite.

    Merci

  2. #2
    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
    C'est le but de htmlentities() : convertir les caractères "spéciaux" en entités HTML.
    Il n'y a pas lieux de l'utiliser sur des données insérer dans une base.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut
    Si j'enlève la fonction htmlentities() lors de mon insertion dans MySQL j'obtiens

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par défaut
    * Editeur de texte NotePad++ encoder en format ANSI
    * Dans mon script PHP je ne spécifie pas de charset
    * Pour l'affichage de mes données dans ma page HTML, je ne spécifie pas de charset
    ben justement tu devrais peut-être. Ça éviterait ce genre de problème.

    quel interclassement pour la base de données ?



    sinon perso je mets utf8_bin

    [edit] tu peux mettre notepad++ sur encodage "utf-8 sans bom"

    puis dans ma page php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php echo '<?xml version="1.0" encoding="utf-8"?>' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr" lang="fr-fr" >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    </head>
    <body>
     
    </body>
    </html>
    et en cas de souci d'affichage je rajoute avant mes requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SET NAMES 'utf8'");

  5. #5
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut
    quel interclassement pour la base de données ?
    utf8_general_ci

    J'ai essayé de mettre mes pages au format UTF8 sans BOM et inclure la balise meta dans mes pages mais lorsque j'insère "L'école à toto" j'obtiens "L'&Atilde;&copy;cole &Atilde;&nbsp; toto"

    Mon pb vient bien du fait que je sois en ISO pour mettre mes données alors que mes tables sont en UTF8.

  6. #6
    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 n'intervient pas dans le format des données.
    Tu dois par contre toujours retirer htmlentities().

    Il serait vraiment plus simple que tu uniformises l'encodage de ta page HTML, des tes fichiers PHP et de ta base.
    Sinon i lfaut jouer avec utf8_encode(), utf8_decode().
    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. [HTML] Encodetype HTML pour les caractères accentués
    Par danathane dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/08/2007, 15h25
  2. Réponses: 6
    Dernier message: 14/07/2005, 14h25
  3. Quel avenir pour les outils de génération de code ?
    Par Bruno75 dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 05/11/2003, 18h30
  4. Quel Outil pour les applis Industrielles ET bases de données
    Par ThierryAIM dans le forum Débats sur le développement - Le Best Of
    Réponses: 8
    Dernier message: 23/04/2003, 09h14
  5. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30

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