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 de ma database et de mes tables [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut encodage de ma database et de mes tables
    Bonjour,
    Que de documents sur ce sujet, pourtant impossible d'y voir clair,
    même sur notre page :
    http://j-willette.developpez.com/tut...-site-en-utf8/

    En effet je sais parfaitement a quoi sert l'interclassement, par exemple dans un ORDER BY, mais cela ne me dit pas quel est l'encodage de ma table.

    Je sais trouver l'encodage de ma data base, il est indiqué dans l'accueil de phpmyadmin.

    Mais dans cette data base quel est l'encodage de chaque table , impossible de trouver cette information,

    Surtout si je pouvait par un SELECT de MySql avoir ces informations ce serait super pour moi.

    Merci d'avance de méclairer sur ce sujet.

  2. #2
    Membre extrêmement actif Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Par défaut
    heu, c'est ça que tu cherches?
    Images attachées Images attachées  

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ledisciple Voir le message
    heu, c'est ça que tu cherches?
    Merci de ta réponse,
    Tu dois lire les questions cela ferait avancer les choses j'ais dis clairement que je connaissais l'interclassement

  4. #4
    Membre extrêmement actif Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui c'est déjas mieux ciblé ! mais rien sur les tables
    Merci quand même.
    Christele

    JE REEDITES
    En plus je vois que ma database est en UTF8 sur PhpMyadmin et pourtant
    ce code me réponds "latin 1" c' est pas spécialement limpide tu vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $Flag1=mysql_connect('localhost', 'foxxxx', 'zzzz12') or    die('Could not connect: ' . mysql_error());
    $b = mysql_client_encoding($Flag1);
    echo "<br>encodage est ".$b."<br>";
    ?>
    Dernière modification par Invité ; 30/09/2011 à 15h12.

  6. #6
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Bonsoir,

    J'espère que j'ai bien compris, mais tu aimerai savoir avec la méthode "mysql_client_encoding" l'encodage de ta table. Hors si tu regarde la spéc PHP elle indique qu'il est retourné l'encodage du client MySQL et pas de ta table.

    Pour connaître l'encodage d'une table j'ai trouvé cette possibilité:
    show create table TABLE_IN_QUESTION; (regarder le CHARSET=XXX à la fin)

    Ce lien à l'air intéressant.

    Bon dév'

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par firehist Voir le message
    Bonsoir,
    J'espère que j'ai bien compris, mais tu aimerai savoir avec la méthode "mysql_client_encoding" l'encodage de ta table.etc...
    Oui et mille mercis,
    tu as bien compris, mais alors j'ais un PHP avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    header('Content-type: text/html; charset=UTF-8');
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head><body>
    <?php
    //====== et la le code induqué
    ?>
    Alors mon SQL est UTF8 mon PHP aussi et le html aussi alors c'est qui qui est en latin1
    Si non ta réponse m'a fait découvrir plein de points qui précisent bien les choses mille mercis encore.
    christele

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Voila avec tout cela je me suis fait un résumer qui servira a qui veulent.
    Je notes que:
    1) l'interclassement ne sert qu'au tri dans un ORDER BY ...
    2) l'encodage indiqué dans la premiere page de PHPMYADMIN n 'est pas significatif
    3) ce qui compte est de savoir quel est l encodage des tables vu par MySql

    ce testes "a.php" est tres tres util (merci firehist )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
    header('Content-type: text/html; charset=UTF-8');
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head><body>
    <?php
    $Flag1=mysql_connect('localhost', 'xxxx', 'yyyy') or    die('Could not connect: ' . mysql_error());
    $Flag2=mysql_select_db("tabase");
    $infos_gene = mysql_get_server_info($Flag1);
    echo "==> ".$infos_gene." <br />";
    //======= encodage par default de MySql =======
    $encode_default = mysql_client_encoding($Flag1);
    echo "<br>l encodage par default est ".$encode_default."<br />";
    //======encodage d une de tes table==========
    $table="0_test";
    $encodage_table = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
    echo "<br /> encodage et details de la table ".$table." <br />";
    print_r($encodage_table);
    ?> 
    </body></html>

    2)le php va envoyer un html au navigateur, quel encodage est choisi ? (content-type entre les HEAD du HTML)
    3) le php va envoyer les echo ou print avec quel encodage ? (as tu précisé un header('Content-type: text/html; charset=UTF-8'); )
    ou l'instruction à modifier dans le httpd.conf ou dans un .htaccess : AddDefaultCharset UTF-8

    il faut donc connaitre ces trois encodages

    (comme les langues il faut des traducteurs MySql et Le Navigateur)

    Je dis "précises" car si SQL est anglais et que je lui dit, ma page php est française
    alors ==>MYSQL<== traduira du français vers l'anglais, entre mon php et mon SQL !
    et inversement ( lecture et en écriture ) !

    Alors php devrait avoir la meme langue que le html qu'il génére !
    Donc le
    header('Content-type: text/html; charset=UTF-8');
    Oblige
    <meta http-equiv="content-Type" content="text/html;charset=UTF-8">
    De toute façon le deuxieme l'emporte sur le premier.

    HOP THIS HELP !

  9. #9
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Pour mes sites en UTF-8, je ne me prend pas trop la tête.

    • Fichier encoder en UTF-8
    • Header UTF-8 dans mes layouts
    • mysql_query("SET NAMES 'utf8'"); avant ta requête

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par firehist Voir le message
    Pour mes sites en UTF-8, je ne me prend pas trop la tête.

    • Fichier encoder en UTF-8
    • Header UTF-8 dans mes layouts
    • mysql_query("SET NAMES 'utf8'"); avant ta requête
    Oui maiss en fait MySql restera en Latin 1

  11. #11
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Vi certainement, je ne me suis jamais posé plus la question, tous les caractères sont passés.
    Bon ok c'est pas trop pro mais ça marche!

    Héhéhé

  12. #12
    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 firehist Voir le message
    mysql_query("SET NAMES 'utf8'"); avant ta requête
    plutôt mysql_set_charset

  13. #13
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Merci stealth.

    J'essayerai dans mes prochains dév. Je ne l'ai jamais utilisé auparavant.
    Maintenant avec des ORMs comme Doctrine, cette partie est devenue plutôt abstraite pour le développeur que je suis

  14. #14
    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 firehist Voir le message
    Merci stealth.

    J'essayerai dans mes prochains dév. Je ne l'ai jamais utilisé auparavant.
    Maintenant avec des ORMs comme Doctrine, cette partie est devenue plutôt abstraite pour le développeur que je suis
    pour Doctrine et Mysql l'encodage est correct qu'a partir de la version 5.3.6 de PHP et la version du DBAL 2.0.5, le problème c'est que si on ne définie pas le charset du client, les fonctions d’échappement de marche pas correctement (comme mysql_real_escape_string), le SET NAMES dit juste comment transmettre les informations

  15. #15
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Merci bien!

    Je prend note

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    pour Doctrine et Mysql l'encodage est correct qu'a partir de la version 5.3.6 de PHP et la version du DBAL 2.0.5, le problème c'est que si on ne définie pas le charset du client, les fonctions d’échappement de marche pas correctement (comme mysql_real_escape_string), le SET NAMES dit juste comment transmettre les informations
    Tu m'avoueras que ça mériterait une révision de 99% des TOPOS dont les notres tant ce qui passe aux yeux de presque toutes et tous comme le NEC PLUS ULTRA, n' etait en fait pas trés fiable !

  17. #17
    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 christele_r Voir le message
    Tu m'avoueras que ça mériterait une révision de 99% des TOPOS dont les notres tant ce qui passe aux yeux de presque toutes et tous comme le NEC PLUS ULTRA, n' etait en fait pas trés fiable !
    oui y'a du ménage a faire

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/07/2008, 12h38
  2. Modifier l'encodage de mes tables
    Par raoulchatigre dans le forum Outils
    Réponses: 4
    Dernier message: 24/08/2006, 15h59
  3. comment vider mes tables a la fin
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 9
    Dernier message: 14/05/2005, 11h33
  4. Database new user & create table
    Par MFDev dans le forum InterBase
    Réponses: 3
    Dernier message: 30/09/2003, 20h47
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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