Problème d'accents en batch

Bonjour,

J’ai un problème avec les accents dans un fichier batch.
Par exemple si j’ai la commande rename Original.txt Modifié.txt j’obtiens ceci : ModifiÚ.txt
En revanche, si je tape la commande dans une fenêtre d’invit’ de commande, alors j’ai bien Modifié.txt.

J’utilise Notepad++ pour éditer mon fichier bat, et j’ai essayé de convertir le fichier bat en UTF8 mais ça n’a pas donné le résultat espéré.

Que dois-je faire pour que les accents soient correctement gérés dans mon bat ?
J’ai trouvé une solution toute simple pour ce cas précis, mais j’espère tout de même avoir des réponses…
Edité le 25/12/2013 à 05:22

:hello:

LE fameux problème d’encodage de caractères dans la console Windows …

C’est pour cette raison (entres autres) que je suis passé à Cygwin, histoire d’utiliser les outils Unix et le langage Bash …

Ceci étant il y a une solution :

Tout d’abord dans une fenêtre de ligne de commande, regarde quel est l’encodage actuel de la ligne de commande en saisissant :

chcp

En principe, la valeur par défaut pour un Windows français est OEM 850.
Dans Notepad ++, dans l’onglet encodage / codage de caractères / langues d’europe occidentale / choisis OEM 850.
En revanche, il y a un défaut à cette méthode : Il faudra modifié le batch pour corriger les accents. :jap:

Pour info, à ma connaissance, la console Windows ne supporte pas Unicode. :sweet:

Edit : A voir si éventuellement on peut lancer un batch en utilisant le Powershhel, peut être est-ce que l’on peut contourner le problème de cette façon ? (je ne connais ni le langage powershell, ni l’interpréteur).
Edité le 25/12/2013 à 10:58

Merci Juju pour ta réponse. :slight_smile:

Comme j’ai écrit ce matin, j’ai trouvé une solution, mais j’espérais avoir des réponses pour voir s’il y avait mieux.

Alors je viens de faire le chcp et j’obtiens bien 850 comme tu disais. :super:
Je crois bien qu’avant de poster j’avais essayé OEM 850 dans Notepad++, et que ça donnait un autre résultat que “ModifiÚ.txt”, mais un résultat incorrecte tout de même.

La solution que j’ai trouvée sur le Net, mais que je ne comprends pas, c’est simplement d’ajouter une commande, que j’ai placée au tout début du fichier batch : chcp 28591 > nul
Pourquoi 28591 et pas une autre valeur ??? J’avoue que je n’en sais rien du tout.

Ce que je trouve étrange, c’est que si je regarde le déroulement dans la fenêtre d’invit’ de commande, je vois toujours ces caractères “bizarres”, mais en revanche le résultat obtenu est parfaitement correcte.
Edité le 25/12/2013 à 19:37

Peut être un début d’explication ici : www.developpez.net… ?

Mais je t’avoue que je ne connais pas énormément l’encodage des caractères avec la ligne de commandes, je sais juste que c’est assez galère avec les histoires d’accents et autres. :confused:
Edité le 25/12/2013 à 21:54

Merci Juju,c’est justement sur cette page que j’avais récupéré l’astuce en question. :wink:

Merci YCL1 pour ta réponse extrèmement documentée ! :super:

Toutefois, ayant la comprenette particulièrement longue à la détente, je n’ai pas tout saisi. :frowning:
Aurais-tu la patience de m’expliquer la chose en utilisant un exemple de mon invention ???