Почему существует разница между кодировкой командной строки Windows и командным файлом? - PullRequest
9 голосов
/ 31 октября 2008

Например, предположим, у меня есть командный файл с именем 'test.cmd', и он просто содержит:

echo %1

Я могу вызвать это напрямую из командной строки с помощью 'test.cmd some¬arg', и в результате будет напечатана строка 'some¬arg'.

Однако, если я помещаю этот же вызов во второй пакетный файл, называемый 'tester.cmd', для аргументации, и я вызываю это из командной строки, то получается строка 'some%arg'.

Что мешает кодированию и как мне обойти это? Я уверен, что исправил это раньше, но я не могу вспомнить, как ...

Спасибо!

1 Ответ

9 голосов
/ 31 октября 2008

Это потому, что ваш пакетный файл закодирован в другой кодовой странице, чем в настоящее время находится cmd.exe.

В западных конфигурациях по умолчанию cmd.exe запускается в CP850 , но текстовые редакторы обычно работают в CP1252 (что часто ошибочно называют Latin-1 или ISO-8859- 1).

Символы «¬» и «¼» имеют одинаковый код символа в этих двух кодовых страницах «BC».

Решение простое. Либо закодируйте ваш пакетный файл в кодовой странице 850, либо переключите cmd.exe на кодовую страницу 1252, введя chcp 1252.

...