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 :

Problème d'encodage UTF-8 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut Problème d'encodage UTF-8
    Bonjour,

    C'est toujours le même problème qui revient... Sur mon CMS, je mets à jour des contenus via un formulaire. Il y a 2 modes :
    - soit le HTML n'est pas activé, dans ce cas j'exécute le code suivant sur mon contenu avant d'insérer les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->data['description'] = htmlentities( $this->data['description'], ENT_QUOTES, 'UTF-8' );
    - soit le HTML est activé.

    Or pour un des modules, ça ne fonctionne pas. Dans le premier cas, les caractères accentués sont transformés en entités HTML. Dans le deuxième cas, les caractères accentués sont remplacés par des caractères bizarres. Bref, rien ne fonctionne comme je veux.

    Toutes les tables et tous les champs concernés dans la base de données ont le charset utf8_unicode_ci.

    Ma page HTML contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
    Toutes les requêtes SQL sont précédées par Le problème ne semble se produire que pour un type de contenu. Or le fonctionnement est rigoureusement identique dans tous les modules.

    Je vais essayer de poster une partie du code dès que possible. Mais peut-être quelqu'un a-t-il une idée ?

  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
    Tu as peut etre un fichier qui n'est pas ecrit en UTF8.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu as peut etre un fichier qui n'est pas ecrit en UTF8.
    C'est ce que j'ai pensé mais comment le vérifier ?

  4. #4
    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
    Avec notepad++
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Avec notepad++
    Et sous Linux ?

  6. #6
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    bonsoir,

    en utf-8 un caractère avec accent prend 2 octets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $var = "é";
    echo strlen($var);
    echo "<hr>";
    echo strlen(utf8_encode($var));
    donc il suffit d'afficher un strlen de "é" sur le serveur


  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut
    Citation Envoyé par ska_root Voir le message
    bonsoir,

    en utf-8 un caractère avec accent prend 2 octets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $var = "é";
    echo strlen($var);
    echo "<hr>";
    echo strlen(utf8_encode($var));
    donc il suffit d'afficher un strlen de "é" sur le serveur

    Ca me donne :
    2
    4

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

Discussions similaires

  1. [FPDF] Encodage UTF-8
    Par navis84 dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 08/09/2018, 12h43
  2. problème d' encodage utf-8 (je pense en tout cas)
    Par reventlov dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 29/05/2008, 19h47
  3. [DOM] Problème d'encodage UTF-8
    Par Valter dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/05/2008, 15h32
  4. Problème d'encodage UTF-8
    Par Shugo78 dans le forum Ubuntu
    Réponses: 0
    Dernier message: 23/11/2007, 19h40
  5. [MySQL] Problème d'encodage UTF-8
    Par cloridriks dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/10/2007, 11h19

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