Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PHP MYSQL] Encodage caractères en UTF8

UTF8

Sujet résolu
    17 mai 2022 à 9:20:16

    Bonjour tous le monde ,

    J'ai un souci sur l'encodage des caracères dans ma BDD. J'ai configuré le type d'encodage de ma table ainsi que toutes les colonnes en utf8_general_ci mais quand je fais un insert toutes les mots qui contiennent des accents s 'affichent un peu bizarre comme : Ã© , Ã© ,... J'ai pas de problème au niveau html sur l'affichage des données sur le navigateur mais le souci c'est au niveau de la base.

    J'ai déjà parcouru le site et déjà essayé les solutions proposées à tous ce qui avaient le même problème mais cela n'a pas pu résoudre mon problème.

    Ci-dessous mon code html ainsi que ma connexion à ma BDD :

    connexion à la BDD :

    $connexion = mysqli_connect($hoteBD,$login,$pass);
    mysqli_select_db($connexion,$nomBD);
    mysqli_set_charset($connexion,"utf8_general_ci");
        if(!$connexion){
            die('Impossible de se connecter à la base de données'.mysqli_connect_error());
        }

    Dan le head de la page :

    <head>
        <meta charset="UTF-8">

    Merci par avance pour votre aide.

    -
    Edité par D@m@ 17 mai 2022 à 12:57:23

    • Partager sur Facebook
    • Partager sur Twitter
      17 mai 2022 à 9:59:37

      Salut

      Tu n'as mis que peu de code, mais pense vraiment à utiliser l'outil prévu pour sur ce site (le bouton </>) quand tu en fourniras plus. Parce que là, c'est difficilement lisible. Si tu pouvais éditer ton message ci-dessus pour y changer la mise en forme actuelle, ce serait super. Tu as un bouton pour éditer les messages qui apparaît au survol de ceux-ci, en haut à droite du message.
      Ce n'est pas la première fois qu'on te le demande, donc tu ferais bien mieux de prendre note sérieusement.

      Le jeu de caractères à renseigner pour mysqli_set_charset() ne doit pas contenir l'ordonnancement, donc être ici simplement utf8, tel que mentionné dans la FAQ PHP. Du coup, avec ce que tu as mis, le jeu n'est pas déterminé correctement, je pense que c'est le jeu par défaut qui est pris.

      Attention : il te faudra corriger les données dans les tables une fois cette correction effectuée, sans quoi tu auras des soucis dans tes pages cette fois.

      -
      Edité par Ymox 17 mai 2022 à 10:10:30

      • Partager sur Facebook
      • Partager sur Twitter
        17 mai 2022 à 10:24:16

        Bonjour et je vous remercie de m'avoir répondu si rapidement.

        Le souci est maintenant résolu au niveau de l'affichage dans la BDD mais quand j'essai d'exporter les résultats en 

        Excel j'ai encore le même affichage dans Excel concernant les accents.

        Ci-dessous mon code pour l'export en Excel :

        <?php
        require_once('database.php');
        $sql="select * from incident";
        $res=mysqli_query($connexion,$sql);
        
        $html=
               '<table class="table" bordered="1">
                      <tr>
                         <th>Description</th>
                         <th>Plateforme</th>
                         <th>Cause</th>
                         <th>Action</th>
                         <th>Heure de début</th>
                         <th>Heure de rétablissement</th>
                     </tr>';
        while($ligne=mysqli_fetch_assoc($res)){
        $html.=
               '
                       <tr>
                           <td>'.$ligne['description'].'</td>
                           <td>'.$ligne['plateforme'].'</td>
                           <td>'.$ligne['cause'].'</td>
                           <td>'.$ligne['action'].'</td>
                           <td>'.$ligne['hdeb'].'</td>
                           <td>'.$ligne['hretab'].'</td>
                      </tr>';
        }
        $html .='</table>';
         header('Content-Type: application/xls');
         header('Content-Disposition: attachment; filename=export.xls');
        echo $html;
        ?>

        Merci beaucoup pour votre aide.

        -
        Edité par D@m@ 17 mai 2022 à 12:49:16

        • Partager sur Facebook
        • Partager sur Twitter
          17 mai 2022 à 11:15:50

          Ymox a écrit:

          Salut

          Tu n'as mis que peu de code, mais pense vraiment à utiliser l'outil prévu pour sur ce site (le bouton </>) quand tu en fourniras plus. Parce que là, c'est difficilement lisible. Si tu pouvais éditer ton message ci-dessus pour y changer la mise en forme actuelle, ce serait super. Tu as un bouton pour éditer les messages qui apparaît au survol de ceux-ci, en haut à droite du message.
          Ce n'est pas la première fois qu'on te le demande, donc tu ferais bien mieux de prendre note sérieusement.

          • Partager sur Facebook
          • Partager sur Twitter
            18 mai 2022 à 16:50:36

            Merci d'avoir adapté le code de tes messages.

            Il y a plusieurs soucis dans ce que tu fais pour l'export :

            1. Excel ne détecte pas l'UTF-8 sans qu'il y ait de BOM. A minima, ajoute l'instruction echo pack('H*','EFBBBF'); juste après les appels à header(…) ;
            2. Ce que tu génères pour l'export n'est pas le bon format pour un fichier Excel, et suivant les versions, cela ne sera pas accepté. Peut-être serait-il plus simple de générer du CSV.

            -
            Edité par Ymox 18 mai 2022 à 16:50:51

            • Partager sur Facebook
            • Partager sur Twitter

            [PHP MYSQL] Encodage caractères en UTF8

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown