Pourquoi existe-t-il une différence entre le codage de l'invite de commande Windows et un fichier de commandes?

StackOverflow https://stackoverflow.com/questions/252970

Question

Par exemple, supposons que j’ai un fichier de commandes appelé 'test.cmd' et qu’il contient simplement:

echo %1

Je peux appeler ceci directement à partir de l'invite de commande avec 'test.cmd some¬arg' et le résultat est que la chaîne 'some¬arg' est imprimée.

Toutefois, si je place ce même appel dans un deuxième fichier batch, appelé 'tester.cmd' pour des raisons d'argument, et que j'appelle cela à partir de l'invite de commande, le résultat est que la chaîne < code> 'some% arg' est imprimé.

Qu'est-ce qui gâche le codage et comment puis-je le contourner? Je suis sûr que j'ai déjà résolu ce problème, mais je ne me souviens pas comment ...

Merci!

Était-ce utile?

La solution

Cela est dû au fait que votre fichier de commandes est codé dans une page de code différente de celle actuellement utilisée par cmd.exe.

Dans les configurations par défaut occidentales, cmd.exe commence dans CP850 , mais les éditeurs de texte fonctionnent généralement dans CP1252 (ce qui est souvent appelé à tort Latin-1 ou ISO-8859-1).

Les caractères " ¬ " et " ¼ " partager le même code de caractère dans ces deux pages de code, "BC".

La solution est simple. Encodez votre fichier de commandes dans la page de codes 850 ou passez de cmd.exe à la page de codes 1252 en émettant chcp 1252 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top