L’argument de ligne de commande d’un fichier de commandes contenant le caractère UTF-8 pose problème

J’ai écrit un petit utilitaire qui prend un chemin en argument de ligne de commande, mais je rencontre des problèmes si (et seulement si) cet argument est transmis depuis un fichier de commandes et contient des caractères UTF-8 tels que Umlauts (ce qui est malheureusement assez courant lorsque la langue du système est l’allemand).

Je peux passer un nom de fichier avec Umlaut à partir des propriétés de débogage du projet, pas de problème. Je peux passer un nom de fichier avec Umlaut à partir de la ligne de commande, pas de problème. Je passe un nom de fichier avec Umlaut à partir d’un fichier de commandes, mayhem.

De toute évidence, j’ai essayé de sauvegarder le fichier batch UTF-8 codé … mais alors la chose la plus maudite n’exécutera aucune commande.

Le programme actuel est écrit en C #. Quelles options ai-je pour traiter correctement ces arguments, dans le fichier de commandes ou côté code?

Utilisez CHCP 1252 comme première ligne de votre lot et cela fonctionnera avec les chemins.

Edit: Je viens de le tester. Ça va marcher. Les parameters fonctionnent là où obtenir le bon résultat (par écho) ne va pas.

Quoi qu’il en soit, si vous essayez de faire écho quelque chose comme “öäü”, il ne sera pas affiché correctement.

Pour vous en sortir, procurez-vous un éditeur capable de sauvegarder votre fichier au format ASCII (bloc-notes ++ à ma connaissance).

vous pouvez utiliser des scripts PowerShell pour UTF 8. Le traitement par lots prend en charge les fichiers ASCII uniquement.