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 de traitement des 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é
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut Problème de traitement des caractères accentués
    Bonjour,

    Je rencontre un problème avec les chaines comprenant des caractères accentués. Si j'ai le code suivant, ça fonctionne, j'obtiens bien le bon nombre :
    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
    <?php
     
       include "../php/mysqli_conf.inc.php"; // Lien vers mon fichier de connexion
       $link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));   // Connexion &agrave; MySql
     
       if (mysqli_connect_errno())
          {
             printf("Échec de la connexion : %s\n", mysqli_connect_error());
             exit();
          }      
     
       if ($result = mysqli_query($link, "SELECT * FROM MaBase WHERE classification = 'chien'"))
          {
     
             $row_cnt = mysqli_num_rows($result);
     
             echo($result);
                   }
     
    ?>
    Par contre, si j'ai un caractère accentué dans ma chaine (chat castré au lieu de chien) comme en dessous :

    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
    <?php
     
       include "../php/mysqli_conf.inc.php"; // Lien vers mon fichier de connexion
       $link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));   // Connexion &agrave; MySql
     
       if (mysqli_connect_errno())
          {
             printf("Échec de la connexion : %s\n", mysqli_connect_error());
             exit();
          }      
     
       if ($result = mysqli_query($link, "SELECT * FROM MaBase WHERE classification = 'chat castré'"))
          {
     
             $row_cnt = mysqli_num_rows($result);
     
             echo($result);
                   }
     
    ?>
    J'obtiens un nombre de 0, alors qu'il y a des chats castrés.
    Une recherche sur le net me parle de htmlspecialchars mais je n'arrive pas à la mettre correctement en oeuvre.
    Voyez-vous comment faire ?
    Merci d'avance.

  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
    Contrôle que tous tes éléments ont le même encodage, en particulier, le fichier .php et la connexion à la base de données.
    http://j-willette.developpez.com/tut...-site-en-utf8/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Bonjour Sabotage,

    Comme d'habitude, tes commentaires font bouger les lignes ....
    J'ai commencé à vérifier les fichiers et il y avait un mélange entre du ANSI et du UTF-8 (Sans BOM).
    J'ai donc suivi ton conseil, exploité le lien et commencé à tout mettre en UTF-8 (Sans BOM)

    Je me retrouve avec des signes cabalistiques dans l'affichage du suite du fichier que je n'ai pas envoyée car inutile pour mon problème.
    J'arrive maintenant au fait de modifier l'interclassement du champ qui est actuellement en utf8_general_ci et ..... ça me fout la frousse car j'ai d'autres pages qui font également référence à ce champ et je crains de me retrouver avec un m...... sans nom.

    Je précise que ce script fonctionnait très bien précédemment et que le problème vient du fait que je suis en train de le modifier en passant de MySQL_ à Mysqli_
    Ne peut-on pas au contraire tout mettre en ANSI ?

  4. #4
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Bonjour,

    J'ai tout mis en ANSI et ça fonctionne convenablement.
    Y a t'il néanmoins un intérêt à passer en UTF-8 ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Denis,
    oui, l'un des intérêts de l'UTF-8 est justement de pouvoir écrire des accents sans souci !

    Dans ton cas, il faudrait (si possible) TOUT passer en UTF-8, les tables/colonnes en BdD comprises.

  6. #6
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Messages bien compris ;-)
    Je clos cette discussion.

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

Discussions similaires

  1. Chiffrement RSA - Problème avec des caractères accentués
    Par HommeDeJava dans le forum Sécurité
    Réponses: 10
    Dernier message: 01/02/2012, 17h14
  2. Problème d'insertion des caractères accentués
    Par yaya0057 dans le forum Général Java
    Réponses: 5
    Dernier message: 24/02/2011, 10h42
  3. [Artichow] Caractères accentués des légendes
    Par tiantian dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 19/07/2007, 16h18
  4. Problème d'affichage des caractères accentués
    Par Neuromancien2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 07/07/2007, 13h43
  5. Problème d'affichage des caractères accentués
    Par ostaquet dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 06h58

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