Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'encodage SQL

    12 novembre 2011 à 22:39:38

    Bonjour à tous !

    J'ai commencer à créer mon site il y a plusieurs mois avec l'encodage iso-8859-1, puis j'ai relu le nouveau cours sur le HTML5/CSS3 pour me mettre à jour et me suis rendu compte que l'encodage conseillé est l'UTF-8 :lol:
    Avant ça, je croyais que c'était un encodage prévu uniquement pour les anglais, vu que j'avais des problèmes d'affichage avec les accents. :euh:
    Je mets donc mon site à jour (progressivement) vers ce nouvel encodage. Pour les fichiers, je n'ai pas eu trop de problèmes, tout fonctionne de ce coté-là normalement.
    Mais au niveau de la base de données, les accents s'affichent en � sur la page web (soi-disant que l'UTF-8 connait quasiment tous les caractères hein :p ), à part les chaînes qui sont entourées d'un htmlentities(). J'ai changé l'encodage en UTF-8 avec Navicat, mais ça ne change rien.

    Merci d'avance ;)
    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2011 à 10:48:28

      Bonjour,

      Je veux pas te dire de bêtises car je connais qu'à moitié le sujet mais voici mon idée.
      Quand tu as enregistré les données dans ta base, tu avais un encodage iso-8859-1. Donc pour les afficher sur des pages dont le charset est UTF-8, forcément ça pose problème.
      Il faudrait que tu mettes à jour tes données maintenant que tu as changé ton encodage.

      Romain
      • Partager sur Facebook
      • Partager sur Twitter
        13 novembre 2011 à 11:14:56

        Si tu développes en php, tu peux tester des fonctions comme iconv, utf8_encode.
        • Partager sur Facebook
        • Partager sur Twitter
          13 novembre 2011 à 11:30:38

          Il n'y aurait pas plutôt un logiciel qui saurait faire ça ? Ou une requête en SQL ? :D
          • Partager sur Facebook
          • Partager sur Twitter
            13 novembre 2011 à 11:46:25

            As-tu changé l'encodage à la fois dans tes pages html ET dans ta base de données ?
            Peut-être que même en changeant manuellement l'encodage de ta base de données elle a toujours "gardé en mémoire" ton premier encodage.
            Voici un lien pour convertir ta base de données en UTF8.
            http://blog.kheb.fr/programmation/conv [...] rs-utf-8-230/

            Citation : Alexmothe93

            Il n'y aurait pas plutôt un logiciel qui saurait faire ça ? Ou une requête en SQL ?


            Aucune idée, désolé.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              13 novembre 2011 à 13:00:12

              Salut,
              Essaie ceci :
              0 - dans les options de ta base de données et de tes tables vérifie bien que tout les champs sont biens de type UTF8_general_ci et non latin1_... ou autre ;
              1 - Exporte ta base de données en .SQL.
              2 - Ouvre le fichier .SQL résultant de l'exportation et ouvre le avec Notepad++.
              3 - Converti le fichier ouvert en UTF-8 via la commende dans le menu encodage ;
              4 - Enregistre ton fichier sous un autre nom (au cas où) ;
              5 - Supprime l'ancienne base de donnée et remplace-là par la nouvelle (encodage UTF8 donc).

              Normalement cela devrait fonctionner. C'est ce que j'avais fait à l'époque pour mon site...
              • Partager sur Facebook
              • Partager sur Twitter
                13 novembre 2011 à 15:09:12

                Bon, j'ai fait un dump des tables, le fichier était déjà en utf-8, j'ai mis tous les charset defaut en utf-8, supprimé les charset en iso, réinstallé la base, et ça n'a rien changé =S
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  13 novembre 2011 à 15:16:56

                  Autre chose : dans PHPMyAdmin, as-tu bien vérifié que la communication MySQL est sur UTF8 ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 novembre 2011 à 15:18:20

                    "Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)"
                    Tu parles de ça ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      13 novembre 2011 à 16:54:23

                      Citation : Alexmothe93

                      "Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)"
                      Tu parles de ça ?


                      Oui. Sinon, as-tu regardé ce tutoriel ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 novembre 2011 à 18:37:19

                        Ah non, je vais lire ça ^^

                        Edit : Et ben ça ne marche toujours pas o_O
                        Résumé de la situation actuelle : Les fichiers sont en UTF-8, le type d'encodage est défini en UTF-8, la base de données a été convertie en UTF-8 (enfin normalement) mais il ne reconnait pas les caractères qui viennent de la BDD à part ceux qui passent par htmlentities() et utf8_encode().
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 novembre 2011 à 20:22:00

                          Fais la requête suivante que tu te connectes :

                          SET NAMES 'utf8';
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 novembre 2011 à 21:38:34

                            Ça fonctionne, mais je n'ai pas trop envie de mettre ça partout et préfère régler le problème à la source ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 novembre 2011 à 22:51:05

                              Ca règle le rpoblème à la source... Il suffit d'avoir un seul fichier avec ton code de connexion, et de faire un include de ce fichier pour te connecter, plutôt que d'avoir ce code partout.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 novembre 2011 à 22:59:54

                                Pas vraiment, les variables qui passent par un htmlentities() se retrouvent avec des è, é, ... >_<
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Problème d'encodage SQL

                                × 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