Console windows, redirection et encodage

dominic999 Messages postés 3 Statut Membre -  
dominic999 Messages postés 3 Statut Membre -
Bonjour,

Je désire faire une redirection, depuis le shell de Windows XP, dans un fichier texte (simplement tree > tree.txt). Toutefois, l'encodage utilisé pour le fichier texte généré n'est reconnu par aucun des éditeurs que j'ai essayés. Le contenu (output) généré ressemble à ceci:

Le num‚ro de s‚rie du volume est 7C92C22C C0FE:C051
F:.
ÃÄÄÄAnalyses_statistiques
ÃÄÄÄAnnie
³ ÀÄÄÄPr‚sentations
ÃÄÄÄBenoit
³ ÀÄÄÄUdeM

La commande chcp m'a permis de voir que l'encodage utilisé était "850" (quelle idée!?), et j'ai pu récupérer le tout depuis une console Python. Mais il doit y avoir un moyen plus simple? Peut-on forcer un type d'encodage différent?

J'ai essayé d'ajouter le paramètre /u à la commande cmd pour utiliser le unicode. Toutefois, la commande chcp donne toujours "850". Des idées?

Merci à l'avance
Configuration: Windows XP
Firefox 3.0.14

1 réponse

  1. dominic999 Messages postés 3 Statut Membre
     
    Je poste ici ma propre solution Python.

    def redirectionCommandeDos(command=None):
        if command==None:
            command = raw_input(r"Entrer ici la commande DOS (ex: tree c:\)")
        process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
        output = process.stdout.read().strip().decode("850")
        print output


    Une variante utilisant l'indispensable module easygui:

    def redirectionCommandeDos(command=None):
        if command==None:
            command = easygui.enterbox(r"Entrer ici la commande DOS (ex: tree c:\)")
        process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
        output = process.stdout.read().strip().decode("850")
        easygui.textbox(text=output.replace('\r\n','\n')
    0