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() ?
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 ?
Comme l'écrit WhiteCrow, utilise les fonctions FindFirstFile(), FindNextFile() et FindClose() pour parcourir un répertoire (api windows, file management functions)
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
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.
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...
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
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
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()
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...)
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.
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.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent