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
A voir également:

1 réponse

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