Partage
  • Partager sur Facebook
  • Partager sur Twitter

[WinApi] Problème d'encodage de caractères

accents

Sujet résolu
    25 mars 2008 à 20:16:32

    Bonsoir à tous,


    Je suis en train de potasser le tuto sur la WinApi (oui c'est mal, mais j'en ai besoin), et je me retrouve confronté aux problèmes d'encodages des textes que je veut afficher.

    Plus clairement les é deviennent des é etc....


    Je suis sous Code::Blocks avec MinGW, j'ai bien cherché quelque part dans les options du projet mais je n'ai rien trouvé


    Quelqu'un sait-il comment y remédier ?
    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2008 à 21:38:05

      Il faut tout simplement changer l'encodage de tes fichiers sources.
      Tu peux modifier ça à partir du menu "Edit" -> "File encoding"
      Si tu compiles en "Ansi", choisi l'option "System default" qui devrait être "Windows 1252".
      Si tu compiles en "Unicode", prends "UTF-8"
      Ensuite, redonnes le focus à l'éditeur : l'encodage devrait changer dans la barre de status en bas.
      N'oublies pas de faire un petit CTRL-S pour que le modif soit prise en compte.

      Tu peux également, pour la suite, régler l'encodage par défaut dans les options : "Settings" -> "Editor"

      @+
      Xav'
      • Partager sur Facebook
      • Partager sur Twitter
      Portail français wxWidgets : wxDev.fr | Quelques progs + libs wxWidgets compilées : mywxstuff
        25 mars 2008 à 22:40:22

        Oh, je viens de comprendre.

        Je navigue entre deux pc, et je balade mon projet entre les deux (maison et école enfait), sauf que celui de la maison est bien en UTF-8, donc unicode (et je viens de re-tester mon programme dessus, les accents sont ok) , mais pas celui de l'école (je verrais ca demain mais ca doit être ca).

        Or lorsque j'ai copié-coller l'exemple de cette partie, les accents ne sortaient pas (alors que j'étais à la maison -> UTF-8 -> unicode).

        Mais je viens de me rendre compte que l'auteur (Mg++) n'utilise pas la macro TEXT() (qui est pour l'unicode), c'est donc la raison pour laquelle ca compile pas bien les accents, fallait passer en ASCII...


        (En espérant que vous avez suivi)


        Merci de ton aide :)
        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2008 à 22:47:11

          Citation : 445

          (En espérant que vous avez suivi)


          A peu près :-°

          Citation : 445

          Merci de ton aide :)



          De rien et bonne continuation.

          Xav'
          • Partager sur Facebook
          • Partager sur Twitter
          Portail français wxWidgets : wxDev.fr | Quelques progs + libs wxWidgets compilées : mywxstuff
            29 mars 2008 à 17:45:08

            Enfait non, j'ai encore ce problème qui revient.

            Mais enfait c'est l'inverse, c'est lorsque mes fichiers sont en UTF-8 que les problèmes d'accents surviennent.

            Donc ma question est désormais : comment compiler en unicode ?

            Soit comment avoir des fichiers en UTF-8 et pas de problèmes d'accents ?

            Merci :)
            • Partager sur Facebook
            • Partager sur Twitter
              29 mars 2008 à 18:00:47

              Il faut que tu ajoute UNICODE dans la liste des options du compilateur, et que tu spécifies tes chaînes de caractères avec la macro _("......") .
              Par exemple :
              1. MessageBox(_("Message"), _("Titre"), ...);


              • Partager sur Facebook
              • Partager sur Twitter
              Portail français wxWidgets : wxDev.fr | Quelques progs + libs wxWidgets compilées : mywxstuff
                29 mars 2008 à 19:52:08

                Merci de ton aide.

                La macro ...("text") c'est un équivalent du TEXT("text") du tuto ? Ou différent ?


                Par contre je n'ai pas très bien compris comment passer l'option au compilateur :euh: , j'utilise GCC
                • Partager sur Facebook
                • Partager sur Twitter
                  29 mars 2008 à 20:35:48

                  Citation : 445

                  La macro ...("text") c'est un équivalent du TEXT("text") du tuto ? Ou différent ?


                  Franchement, je ne sais pas.
                  Mais ce que je peux te dire, c'est que ce genre de macro sert également pour les traductions automatiques dans les applications multi-langues.
                  Tu codes ton appli dans une langue, tu fournis un fichier ".po" (ou ".mo", je ne sais plus) contenant les équivalences, et la traduction se fait toute seule.

                  Citation : 445

                  Par contre je n'ai pas très bien compris comment passer l'option au compilateur :euh: , j'utilise GCC


                  En ligne de commande, ou avec un IDE (Code::Blocks, Dev Cpp, ...) ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Portail français wxWidgets : wxDev.fr | Quelques progs + libs wxWidgets compilées : mywxstuff
                    29 mars 2008 à 20:49:31

                    Avec Code::Blocks

                    J'ai essayé de le mettre dans other option du compilateur mais il a pas trop aimé
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 mars 2008 à 21:04:03

                      Tu y étais presque.
                      Mets-le dans #defines
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Portail français wxWidgets : wxDev.fr | Quelques progs + libs wxWidgets compilées : mywxstuff
                        29 mars 2008 à 23:47:32

                        On y est presque :D

                        Mais j'ai comme l'impression qu'il ne connait pas la macro _(" ") (c'est bien un underscore c'est ca ?)

                        Car il me dit que '_' n'est pas déclaré
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 mars 2008 à 1:24:21

                          AMHA, Oublie tout autre chose que le 8-bit avec GCC sous windows. Il ne sait pas faire.
                          Prend un éditeur qui permet de choisir l'encoding et tape tout en latin1.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                            30 mars 2008 à 1:33:31

                            C::B le permet,

                            C'est juste que j'aimerais si possible prendre des "bonnes" habitudes avec l'unicode
                            • Partager sur Facebook
                            • Partager sur Twitter
                              30 mars 2008 à 12:10:44

                              Les bonnes habitudes ? hum .. que je réfléchisse ... "Pas dans les codes source!"
                              Dans des fichiers à part oui, mais pas dans les sources.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                30 mars 2008 à 17:39:27

                                Bon j'y suis presque je croit,

                                Me reste plus qu'à trouver comme faire un strcat en unicode...

                                EDIT : Trouvé !

                                Bon alors si jamais cela intéresse quelqu'un de compiler en Unicode ici, voici la manière dont j'y suis parvenu :
                                • Changez l'encodage de vos fichiers sources en UTF-8 (je ne sais pas si c'est absolument nécessaire ou pas, alors à vous de voir)
                                • Ajoutez le define UNICODE à votre compilateur (pour Code::Blocks : clique-droit sur votre projet -> build option -> nom-de-votre-projet -> Compiler Settings -> Defines)
                                • Préfixez tout vos textes par la macro TEXT("texte ici")
                                • Pour les opérations de bases sur les strings, allez voir cette page


                                Et merci à Xaviou et lmghs
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  2 avril 2008 à 21:16:33

                                  Juste pour indiquer que mon problème est résolu.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  [WinApi] Problème d'encodage de caractères

                                  × 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