We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 36022
    • 5 Posts
    Bonjour,

    Mon entreprise à un site web fait avec modx 0.9.6 et une base mysql 4.
    Afin de pouvoir le faire évoluer j’ai mis à jour mysql pour passer à la version 5.

    Mais quand je migre ma base de donné de mysql 4 à mysql 5, les à et les ’ ne s’affiche pas correctement et j’ai des ? à la place !
    De même dans le manager...

    La base est en iso-8859-1, le meta tag aussi, modx est configuré en UTF-8 et la connexion mysql en latin1

    Pouvez-vous m’aider à y voir plus clair ?

    merci

      • 36404
      • 307 Posts
      salut,

      le coup des apostrophes pourraient bien venir d’apostrophes penchées venant de copier coller de Word. Autant l’utf-8 gère ce caractère sans problème autant l’iso l’ignore et affiche ce que tu décris

      tu as peut-être un moyen simple de t’en sortir en faisant une petite requête mysql avec une regex depuis phpMyAdmin pour remplacer les apostrophes penchées par des normales, sinon, pour verifier, ouvre déjà une ressource et fais un essai dans tinyMCE avant de te lancer dans la requête globale

      sinon, honnêtement, le meilleur moyen est de bosser en utf-8...

      Have swing
        réfléchir avant d'agir
        • 36022
        • 5 Posts
        Et je peu passer tout en UTF-8 ?
        Même si les données de ma base est en iso-8859-1 ?

          • 36404
          • 307 Posts
          salut, sorry pas trop là depuis hier...

          alors, c’est sûr que si tu passes tout en utf-8, mieux vaut que ta base le soit aussi...

          mais ça la manip est simple, détour par phpMyAdmin
          - fais un export de ta base complète
          - vire le cas échéant les indication de classement latin dans les champs du fichier mais en général le fichier sql ne comporte pas cette indication
          - fais un rechercher remplacer par rien des indications de default charset dans les structures de table
          - supprime toutes les tables dans la base (t’as intérêt à préparer ton coup pour faire tout ça assez vite si tu ne veux pas te faire appeler arthur smiley)
          - ensuite, sélectionne ta base dans phpMyAdmin et va dans l’onglet opérations
          - là, tu mets le charset de la base par defaut en utf-8 general ci
          - ensuite, onglet sql et tu réinjecte toute ta base
          et ça-y-est tu es en utf-8 !
          l’opération complète devrait te prendre 2/3 minutes maxi

          n’oublie pas du coup de passer ton charset en utf-8 dans le header et, bonne pratique, de passer tes fichiers externes (css, js and co) en utf-8 aussi (achtung, sans bom surtout si tu bosses avec notepad ++, si tu es dans ultraedit pas de souci, il n’en met pas par défaut)
          itou pour tes modules si tu en as dans l’idéal

          et, bien sûr, dans la config de MODx (outils->configuration) dis à notre cms préféré que le charset du site est utf-8 et hop le tour est joué

          le coup des fichiers externes ce n’est pas vraiment une nécessité mais c’est mieux et par expérience j’ai pu constater que linévitable ie6 pouvait avoir des erreurs javascript si le site est en utf-8 et les fichier js en iso (ne me demande pas pourquoi, honnêtement, je ne sais pas mais ça m’est déjà arrivé de résoudre des problèmes de js juste en passant les feuilles de js externes en utf-8 quand elles ne l’étaient pas...

          voilou, bon courage smiley

          Have swing
            réfléchir avant d'agir
            • 36022
            • 5 Posts
            Merci pour ta reponse, en faite j’ai déja fait tout cela,

            j’ai pris tout le site, je l’ai mis sur mon ordinateur en local, j’ai crée un bdd en utf8 et j’ai tout remis dedans. J’ai aussi changer le header en utf8, modx était déja en utf8 dans la config. Et j’ai toujours des problèmes sur les à et les ’, meme si je pense que pour les ’ tu as raison, ce doit être des copier collé de word, un replace mysql pourra peu être rattraper les ’ mais pour les à je ne sais pas comment faire
              • 36404
              • 307 Posts
              bizarre, normalement, les à ne posent pas de problème, les apostrophes word oui...

              quand tu as réinjecté ta base, tu es sûr de ne pas l’avoir fait avec le charset mis en latin table par table (le charset des tables est exporté dans un dump), jette juste un oeil à la structure d’une table genre prefix_site_content et regarde si les champs varchar ont bien la mention utf8

              Have swing
                réfléchir avant d'agir
                • 36022
                • 5 Posts
                J’ai exporté en direct puis copier collé dans un txt parceque sinon le fichier était trop gros. Je n’ai aucun mention d’utf8 dans la structure de la base, enfaite il n’y a meme pas de charset.
                  • 36404
                  • 307 Posts
                  ben donc a priori ça devrait être bon, tes champs varchar text et autres doivent avoir la mention utf8 si tu les regardes dans la base avec phpmyadmin, du coup, ça devient étonnant l’histoire

                  curieux ceci dit ton histoire de fichier trop gros... quand tu fais un dump de ta base phpmyadmin te transmet un fichier .sql et à moins d’avoir une méga base en général ça reste vivable, faut vraiment avoir un grooooos fichier (ou être hébergé chez infomaniak smiley) pour ne pas pouvoir importer le contenu du fichier par sql

                  @ suivre (tu as fait un test en ouvrant une ressource et en changeant une apostrophe dans tinyMCE ?)
                    réfléchir avant d'agir
                    • 28432
                    • 372 Posts
                    Salut à tous,

                    pour convertir une base iso en utf8 il suffit d’exporter la base sur ton pc puis de l’ouvrir avec notepad++ "la base" puis tu clique sur affichage->convertir en utf8 puis tu vas écraser ta base. Je te conseil de faire une sauvegarde avant on ne sais jamais. Si ton problème persiste c’est que ta base elle même a été créer en iso il faut simplement la supprimé et la créer une vide en utf8 - utf8 general_ci puis réinsérer les tables... Pense bien a faire une sauvegarde avant !!!

                    @pluche