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 :

PB Encodage UTF-8


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Par défaut PB Encodage UTF-8
    Bonjour,
    j'ai un petit problème d'encodage :

    j'ai une page html encodé en UTF-8
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    elle contient un formulaire qui renseigne une base MYSQL.
    la base est encodée en utf8_unicode_ci, ma table encodée en utf8_unicode_ci et les champs en utf8_unicode_ci.

    l'orsque j'enregistre des champs contenant des caractères spéciaux ex: &é"'(-è_çà)<qwdfghjklmù, tout va bien, sauf que si je regarde le contenu du champ dans phpMyAdmin je lis : &é"'(-è_çà )<qwdfghjklmù
    Je trouve ca bizarre, d'autant que lorsque je ré-affiche ce champ dans une page html je retrouve bien le text original.

    Quelqu'un peut-il m'aider, car j'ai peur de continuer dans une direction qui pourrait engendrer de gros problèmes de codages.

    Merci d'avance à tous pour votre aide.

  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 : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    a priori, c'est juste un problème d'affichage de ton phpMyAdmin. Tu peux tester par exemple que la OCTET_LENGTH() est bien supérieure à la CHAR_LENGTH().

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut j'ai le meme probleme
    Citation Envoyé par Antoun Voir le message
    a priori, c'est juste un problème d'affichage de ton phpMyAdmin. Tu peux tester par exemple que la OCTET_LENGTH() est bien supérieure à la CHAR_LENGTH().
    Bonjour,

    J'ai le même problème puis-je en savoir plus?

    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Par défaut
    Bonjour Antoun et merci pour ta réponse.
    1) Si c'est un problème d'affichage sais-tu comment le résoudre ?
    2) J'ai ouvert le .MYD de cette table dans le répertoire data (tbl_actualites.MYD) avec le bloc note dans ce fichier je lis :

    &&é"'(-è_çÃÂ*)<qwdfghjklmù

    je ne sais plus quoi penser, c'est terrible ces encodages

    que faire

    merci

  5. #5
    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 : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    CHAR_LENGTH donne le nombre de caractères, et OCTET_LENGTH le nombre d'octets. Sur un texte en utf8, les caractères accentués seront codés sur deux octets, on aura donc une CHAR_LENGTH inférieure à la OCTET_LENGTH.

    Si par exemple j'ai une table nommée Textes, avec une colonne Blabla encodée en utf8, et que la ligne d'ID 6 contient le mot "école", on pourra tester la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT OCTET_LENGTH(Blabla) as Nb_Oct, CHAR_LENGTH(Blabla) as Nb_Car
    FROM Textes
    WHERE ID = 6
    Si on obtient 6 octets et 5 caractères, cela montre que les données sont correctement stockées en utf8, et que le problème ne se pose qu'à l'affichage. Si on obtient 6 et 6, cela veut dire que le texte stocké est vraiment "©cole" et qu'il faut corriger les données...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Par défaut
    merci Antoun,

    Le requete fonctionne voici mes résultats
    contenu de mon champ : Texte résumé (Texte résumé)=> oct=18 et car = 14 ??

    Par contre si je force manuellement (avec phpMyAdmin) mon champ sur "école"
    déjà il affiche bien "école" et le résultat est oct =6 car=5

    c'est un pb php ou ????

  7. #7
    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 : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    Citation Envoyé par bjacquart Voir le message
    merci Antoun,

    Le requete fonctionne voici mes résultats
    contenu de mon champ : Texte résumé (Texte résumé)=> oct=18 et car = 14 ??
    ça pue... ça laisse penser à un double niveau de merdouille... Sur ta ligne "Texte résumé", que donne un ORD(SUBSTRING(ta_colonne FROM 8 FOR 1)) ?

    Citation Envoyé par bjacquart Voir le message
    Par contre si je force manuellement (avec phpMyAdmin) mon champ sur "école"
    déjà il affiche bien "école" et le résultat est oct =6 car=5

    c'est un pb php ou ????
    ça veut dire que quand tu saisis dans phpMyAdmin, les données atterrissent correctement... mais ça ne veut pas dire grand-chose ni sur tes données, ni sur le réglage de ton phpMyAdmin.

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

Discussions similaires

  1. [DOM] Encodage UTF-8 dans fichier XML et PHP
    Par norkius dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 03/01/2007, 15h44
  2. Problème d'affichage avec encodage utf-8
    Par t-die dans le forum Zend
    Réponses: 3
    Dernier message: 04/12/2006, 14h55
  3. [C# 2.0] Comment réaliser un encodage UTF-8 ?
    Par StormimOn dans le forum C#
    Réponses: 2
    Dernier message: 18/10/2006, 10h35
  4. Pb Encodage UTF-8 pour Ooo
    Par Sylvain James dans le forum XMLRAD
    Réponses: 10
    Dernier message: 08/03/2006, 22h28
  5. [WebForms] Encodage, UTF-8 et accents
    Par alexischmit dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 28/04/2004, 12h21

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