• # Encodages...

    Posté par . En réponse au message Python et l'unicode. Évalué à 3. Dernière modification le 08 mars 2015 à 22:19.

    En fait, c'est pas un problème spécifique de python ou d'un quelconque langage : avec les encodages il n'y a pas de solution miracle, il faut toujours penser à qu'est-ce qu'on manipule en entrée, sortie, et entre-temps.

    Je connais pas trop python, mais il me semble que dans le version 2.* par défaut tout était traité comme du binaire par défaut, et dans les versions récentes de 3.* c'est l'encodage de la locale qui est utilisé (par exemple pour open()), ce qui est un peu un piège, car ça fera souvent ce que tu veux, mais pas toujours.

    Dans ton cas, comme dit NeoX, si tu ne peux pas prévoir l'encodage des fichiers (c'est pas les tiens, par exemple), tu dois faire un decode manuel de tes noms de fichiers après les avoir récupéré en mode binaire par exemple, ou bien en précisant un encodage sur le filehandle au moment où tu les récupères. Si tu ne sais pas à l'avance l'encodage, faudra utiliser un module avec des fonctions pour essayer de deviner l'encodage, voire juste essayer des decode manuellement et si ça lance une exception en essayer un autre, tout en sachant que c'est jamais totalement fiable (il n'y a que l'utilisateur qui peut vraiment connaître l'encodage de ses fichiers).

    Si à aucun moment tu ne mélanges ces noms de fichiers avec une autre chaîne dans un encodage différent, tu peux probablement aussi juste les traiter comme du binaire tout du long, il y a des chances que ce soit suffisant, faut juste pas faire la bêtise de mélanger une telle chaîne avec une autre chaîne qui n'a peut-être pas le même encodage.