Partage
  • Partager sur Facebook
  • Partager sur Twitter

opendir() avec des noms de répertoires accentués

Sujet résolu
    5 avril 2021 à 12:08:38

    Bonjour,

    j'utilise opendir() pour lister les éléments de répertoires.
    Lorsque le nom de l'élément contient certains caractères accentués, il plante.

    Il est bien connu que les caractères accentués ne sont pas conseillés parce-que mal gérés mais lorsque l'arborescence d'un disque dur existe déjà, avec des noms accentués, quelle solution existe-t-il pour utiliser opendir() ?

    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2021 à 12:15:42

      Hello,

      bon, je vais ptêt dire une connerie (parce que je ne connais pas windows plus que ça), mais si tu développes sous Windows, pourquoi ne pas utiliser l'API windows ?

      https://windows.developpez.com/faq/win32/?page=fichiers 

      • Partager sur Facebook
      • Partager sur Twitter
        5 avril 2021 à 14:42:53

        Hello,

        Comme l'écrit WhiteCrow, utilise les fonctions FindFirstFile(), FindNextFile() et FindClose() pour parcourir un répertoire (api windows, file management functions)

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          5 avril 2021 à 15:28:20

          touvenant a écrit:

          Lorsque le nom de l'élément contient certains caractères accentués, il plante.

          J'ai testé et je n'ai pas de plantage. Certes si je l'affiche dans une console, les caractères ne s'affiche pas correctement, mais ça c'est uniquement un problème de la console.

          • Partager sur Facebook
          • Partager sur Twitter
            5 avril 2021 à 18:56:03

            Merci pour vos réponses.

            White Crown, edgarjacobs, L'API Windows, c'est une très bonne idée. Je comptais voir ça plus tard, je ne peux pas tout apprendre en même temps, je suis déjà en déficit de sommeil.

            rouloude, quels caractères as tu testé ? Chez moi l'ébène et le caïman et le ç ne sont pas passés...

            • Partager sur Facebook
            • Partager sur Twitter
              5 avril 2021 à 19:12:47

              ça m'a l'air bien embêtant sous windows, l'encodage pour la console, l'encodage pour le hd, l'encodage utilisé en dèv …

              Il n'y a pas une bibliothèque qui simplifie un peu tout ça, genre un peu comme la glib → https://developer.gnome.org/glib/stable/glib-File-Utilities.html 

              • Partager sur Facebook
              • Partager sur Twitter
                5 avril 2021 à 19:22:24

                Je suis souvent sous console windows, qui a le code page 850 par éfaut (peut-être est-ce modifiable). Mais si je change le cp en 1252, plus de problème d'accents. Donc, en console, commande chcp 1252 qui passe la console en latin1

                -
                Edité par edgarjacobs 5 avril 2021 à 19:24:32

                • Partager sur Facebook
                • Partager sur Twitter

                On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                  5 avril 2021 à 19:22:48

                  La migration vers Linux est prévue, mais pas encore programmée.
                  Peut-être même que ce sera fait avant que je me mette à l'API Windows...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 avril 2021 à 19:25:49

                    touvenant a écrit:

                    rouloude, quels caractères as tu testé ? Chez moi l'ébène et le caïman et le ç ne sont pas passés...

                    Le ç passe, les autres je ne sais pas ce que c'est ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 avril 2021 à 19:27:09

                      Oui, dans la console, les caractères accentués et autres sont affichés différemment, par contre, opendir() ne semble planter que sur quelques uns (les 3 que j'ai évoqué, sur 27000 fichiers et répertoires)

                      la chaine "l'ébène" dans un nom de répertoire a fait planter opendir() la succession de l'apostrophe et du e accent aigu peut être ?
                      J'ai supposé que c'était le ç qui avait fait planter, en fait, c'est le nom "l'Enquête Française" qui a fait planter opendir()

                      -
                      Edité par touvenant 5 avril 2021 à 19:32:22

                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 avril 2021 à 19:34:56

                        Je ne pense pas pouvoir t'aider, mais tu parles de plantage d'un programme en console. Normalement, tu as dû avoir un message d'erreur, non ? Si oui, ça pourrait aider à comprendre pourquoi 'opendir' plante. (Et si non, eh bien c'est aussi une information...)

                        -
                        Edité par robun 5 avril 2021 à 19:36:17

                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 avril 2021 à 19:38:09

                          J'ai essayé l’apostrophe ça ne pante pas non plus ! et : "l'Enquête Française" non plus !
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 avril 2021 à 20:43:34

                            Mais en définitive, on discute de ton problème sans même avoir vu le code. Le problème peut venir de là.

                            -
                            Edité par edgarjacobs 5 avril 2021 à 20:43:50

                            • Partager sur Facebook
                            • Partager sur Twitter

                            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                              6 avril 2021 à 6:23:44

                              Je me suis rebâti un répertoire de test avec un sous répertoire nommé "L'Enquête Française" et opendir() l'a ouvert sans problème...

                              C'était pourtant à l'ouverture de ce répertoire que le programme avait planté et qu'il était passé ensuite après renommage en "L'Enquete Francaise"...

                              Je ne peux plus reproduire le problème.

                              Désolé, je marque le sujet comme résolu.

                              Merci de votre aide.

                              • Partager sur Facebook
                              • Partager sur Twitter

                              opendir() avec des noms de répertoires accentués

                              × 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