Какую кодировку / кодовую страницу использует cmd.exe при запуске?

Ранее был задан почти такой же вопрос. В ответе было дано хорошее объяснение кодовых страниц, но он не дал ответа на вопрос в моей голове: что контролирует кодовую страницу, используемую при запуске cmd.exe? В моей системе это как-то меняется. В ключе реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage есть элемент OEMCP, для которого установлено значение 437. Похоже, это CP, используемый cmd.exe (как показано chcp) после новой перезагрузки, но что-то меняет его позже, и он становится 1252 в новых окнах cmd.exe. Если я изменю его с помощью chcp на 437, это повлияет только на текущий cmd.exe. Когда я выхожу и перезапускаю cmd.exe, chcp показывает в новом окне 1252. Что контролирует CP по умолчанию, используемый при запуске cmd.exe? Как изменить значение в реестре? Как мне предотвратить его изменение и / или вернуть его на 437 для новых командных окон?


person user1462402    schedule 17.06.2012    source источник


Ответы (2)


Кодовая страница по умолчанию в cmd.exe в моей системе Windows - 437, которая является кодовой страницей OEM по умолчанию для большинства аппаратных средств ПК, продаваемых в Соединенных Штатах (США) и Западной Европе из того, что я читал. Вы можете изменить это значение по умолчанию, добавив строковую запись с именем AutoRun под одним или обоими ключами:

HKEY_CURRENT_USER\Software\Microsoft\Command Processor

и

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor

в реестре Windows, как описано в this Страница поддержки MS Windows Server 2003. В нем описывается, как вы можете добавить запись REG_SZstring с именем AutoRun под одним или обоими этими ключами со значением, содержащим команды, которые вы хотите запускать автоматически при запуске cmd.exe.

Например, чтобы сделать кодовую страницу 1252 по умолчанию, создайте новое строковое значение с именем AutoRun после перехода к одному из этих ключей в служебной программе regedit.exe, а затем установите его значение для команды chcp 1252.

Хотя в статье MS указано, что это применимо только к Windows Server 2003, этот метод также работал на системе Win XP, на которой я ее тестировал, поэтому, вероятно, также будет работать с Vista и Win 7.

person martineau    schedule 05.01.2013
comment
437 действительно используется по умолчанию для большинства командных сред Windows. Интересно, что сбрасывает OP? - person Mark Ransom; 06.01.2013
comment
Связанный вопрос Изменить кодовую страницу Windows по умолчанию console для UTF-8 также может представлять интерес. - person martineau; 19.01.2015

Если Win + R и запуск cmd.exe /D исправляет это, то проблема в cmd автозапуск значение ...

person Anders    schedule 18.06.2012
comment
@ user1462402: Win + R означает, удерживая клавишу Windows, нажмите клавишу R. Другими словами, Андерс предлагает вам использовать поле «Пуск» «Выполнить», чтобы открыть cmd.exe /D. - person Bavi_H; 01.09.2012
comment
FWIW, на моей клавиатуре клавиша Windows имеет заполненный контур логотипа флага Windows (и не говорит Win или что-то еще). - person martineau; 06.01.2013