Warum gibt es einen Unterschied zwischen der Codierung der Windows-Eingabeaufforderung im Vergleich zu einer Batch-Datei?

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

Frage

Angenommen, ich habe eine Batch-Datei mit dem Namen 'test.cmd' und es enthält einfach:

echo %1

Das kann ich von der Eingabeaufforderung mit 'test.cmd some¬arg' direkt aufrufen und das Ergebnis ist, dass die Zeichenfolge 'some¬arg' gedruckt wird.

Allerdings, wenn ich Platz, die gleiche Anruf in einer zweiten Batch-Datei, 'tester.cmd' für die Zwecke der Beweisführung genannt, und ich nenne dies von der Eingabeaufforderung des Ergebnis ist, dass die Zeichenfolge 'some%arg' gedruckt wird.

Was ist es, dass die Codierung vermasselt und wie komme ich um ihn herum? Ich bin sicher, dass ich das schon behoben haben, aber ich kann nicht mehr, wie ...

Danke!

War es hilfreich?

Lösung

Das ist, weil Sie Ihre Batch-Datei in einer anderen Codepage codiert ist als cmd.exe ist derzeit in.

In der westlichen Standardkonfigurationen startet cmd.exe in CP850 , aber Text-Editoren arbeiten in der Regel in CP1252 (was oft fälschlicherweise als Latin-1 bezeichnet oder ISO-8859-1).

Die Zeichen „¬“ und „¼“ teilen sich die gleiche Zeichencode in diesen beiden Codepages „BC“.

Die Lösung ist einfach. Entweder kodieren Ihre Batch-Datei in Codepage 850 oder Switch cmd.exe Codepage 1252 durch chcp 1252 Ausgabe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top