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

Requêtes MySQL Discussion :

probleme avec les caracteres accentues


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut probleme avec les caracteres accentues
    Bonjour,

    j'ai un problème de caractères accentués qui ne s'affiche pas correctement dans le résultat de la requete.

    mysql -u root -p mydb
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.0.67-community-nt MySQL Community Edition (GPL)

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql> SHOW VARIABLES like 'character_set_%';
    +--------------------------+---------------------------------------------------------+
    | Variable_name | Value |
    +--------------------------+---------------------------------------------------------+
    | character_set_client | latin1 |
    | character_set_connection | latin1 |
    | character_set_database | latin1 |
    | character_set_filesystem | binary |
    | character_set_results | latin1 |
    | character_set_server | latin1 |
    | character_set_system | utf8 |
    | character_sets_dir | D:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
    +--------------------------+---------------------------------------------------------+
    8 rows in set (0.03 sec)

    mysql>


    mysql> select distinct(HardType) from mytable where Country='France' order by HardType;
    +--------------------------+
    | HardType |
    +--------------------------+
    ....
    | Imprimante QualitT Photo |
    | Imprimante RTseau |
    ...
    +--------------------------+
    16 rows in set (0.90 sec)


    comme vous voyez, Qualité ---> QualitT
    et Réseau ---> RTseau


    Avez vous une idée comment résoudre ce problème?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 743
    Points
    11 743
    Par défaut
    Peux-tu tester cette série de requêtes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select 'é' ;
    select _latin1'é' ;
    select _cp1250'é' ;
    select _cp850'é' ;
    select _utf8'é' ;
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Voici les résultats:
    mysql> SELECT 'é' ;
    +---+
    | é |
    +---+
    | é |
    +---+
    1 row in set (0.00 sec)

    mysql> SELECT _latin1'é' ;
    +---+
    | é |
    +---+
    | é |
    +---+
    1 row in set (0.00 sec)

    mysql> SELECT _cp1250'é' ;
    +---+
    | é |
    +---+
    | é |
    +---+
    1 row in set (0.04 sec)

    mysql> SELECT _cp850'é' ;
    +---+
    | Θ |
    +---+
    | Θ |
    +---+
    1 row in set (0.07 sec)

    mysql> SELECT _utf8'é' ;
    +---+
    | ? |
    +---+
    | ? |
    +---+
    1 row in set (0.00 sec)

    mysql>

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 743
    Points
    11 743
    Par défaut
    OK... on va maintenant tester les données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select charset(HardType) from mytable ;
    select distinct HardType, 
      ord(substring(HardType FROM 13 FOR 1)) AS Ord, 
      len(HardType) AS Len
    from mytable 
    where Country='France' AND HardType LIKE 'Imprimante R%seau'
    order by HardType
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Merci pour votre aide, voici les résultats des commandes:


    mysql> SELECT DISTINCT HardType, ord(substring(HardType FROM 13 FOR 1)) AS Ord, length(HardType) AS Len FROM mytable WHERE Country
    ='France' AND HardType LIKE 'Imprimante R%seau' ORDER BY HardType;
    +-------------------+------+------+
    | HardType | Ord | Len |
    +-------------------+------+------+
    | Imprimante RΘseau | 233 | 17 |
    +-------------------+------+------+
    1 row in set (0.01 sec)

    mysql>

    Pour info, dans MyEclipse Database Explorer, les caractères accentués sont correctement affichés, par exemple pour la requete précédente j'ai le résultat:

    Imprimante Réseau;233;17;

    Est ce que celà veut dire que dans la base Mysql, les caractères accentués sont bien prise en compte et que le problème vient de l'affichage dans la fenêtre CMD de Windows?

    Merci pour votre aide.

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 743
    Points
    11 743
    Par défaut
    c'est probablement ça, d'autant que 233 est le bon code pour é en latin1.

    Dans ton cmd, passe cet requête, et teste ensuite si le é s'affiche correctement :

    Si ça ne marche pas, essaie les autres jeux de caractères de ton MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SHOW CHARACTER SET;
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    mysql> set names cp850;
    Query OK, 0 rows affected (0.02 sec)

    mysql> select distinct(HardType) from mytable where Country='France' order by HardType;
    +--------------------------+
    | HardType |
    | Imprimante Qualité Photo |
    | Imprimante Réseau |
    +--------------------------+
    16 rows in set (0.23 sec)

    mysql>

    Bravo et Merci pour votre aide.

    Est il possible de dire à mysql de travailler en cp850 par défaut?

    Encore merci.

  8. #8
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Citation Envoyé par vicros Voir le message
    Est-il possible de dire à mysql de travailler en cp850 par défaut?
    Sous Wampserver, par exemple, dans le fichier my.ini tu as une directive default-character-set=latin1.
    Mais chez un hébgergeur, je doute que tu puisses accéder à cette directive.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 743
    Points
    11 743
    Par défaut
    Citation Envoyé par vicros Voir le message

    Est il possible de dire à mysql de travailler en cp850 par défaut?

    Encore merci.
    En théorie oui, en pratique pas vraiment. Cf cet extrait de mon papier sur les jeux de caractères :

    Devez-vous faire un Set Names à chaque nouvelle session ? En théorie, il suffirait de modifier l'option default-character-set de la section CLIENT du fichier
    my.ini. Toutefois, le cp850 n'étant pas un jeu compilé, tenter de l'utiliser comme option de départ empêche le client de démarrer…
    Il ne vous reste donc plus qu'à trouver une distribution de MySQL avec cp850
    compilé. Le caractère compilé ou non d'un jeu de caractère se voit dans un Show Collation.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Merci à tous pour votre aide.

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 743
    Points
    11 743
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Saluton,Sous Wampserver, par exemple, dans le fichier my.ini tu as une directive default-character-set=latin1.
    Mais chez un hébgergeur, je doute que tu puisses accéder à cette directive.
    Attention, on parle ici du jeu de caractères par défaut du client mysql.exe, pas de celui du serveur mysqld. Le jeu par défaut du client doit forcément être un jeu compilé.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

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

Discussions similaires

  1. [Encodage] probleme avec les caracteres speciaux
    Par Akramweb dans le forum Langage
    Réponses: 3
    Dernier message: 27/12/2010, 11h27
  2. Probleme avec les caracteres speciaux
    Par knice dans le forum BIRT
    Réponses: 10
    Dernier message: 28/04/2010, 16h50
  3. Probleme avec les caracteres speciaux
    Par flox dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 29/05/2006, 15h21
  4. Problème avec les caractères accentues
    Par newnew dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 15/10/2004, 13h58
  5. Réponses: 12
    Dernier message: 30/07/2004, 15h43

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