CHCP — просмотр и смена кодировки командной строки Windows

CHCP показывает и меняет кодовую страницу в окне CMD Windows. Решает проблему кракозябр в скриптах и при выводе кириллицы — синтаксис и примеры.

CHCP (Change Code Page) — команда CMD для просмотра и смены кодовой страницы в окне командной строки Windows. Решает главную боль при работе со скриптами: кириллица отображается кракозябрами, потому что кодировка терминала не совпадает с кодировкой файла. Одна команда устраняет проблему без правки скриптов.

Синтаксис команды CHCP

CHCP [кодовая_страница]

Если выполнить CHCP без аргументов — выведет номер текущей активной кодовой страницы. Если указать номер — переключит на неё. Изменение действует только в рамках текущего окна CMD.

Ключи и параметры

Кодовая страница Кодировка Применение
65001 UTF-8 Скрипты и файлы в UTF-8, современный стандарт для большинства задач
1251 Windows-1251 Кириллица в файлах, созданных в старых версиях Windows или 1С
866 OEM 866 (DOS) Кириллица в DOS-приложениях и старых bat-файлах; кодировка по умолчанию в русской Windows
1252 Windows-1252 (Latin-1) Западноевропейские языки, совместимость с западными приложениями
437 OEM 437 (DOS Latin US) Английская DOS-кодировка, кодировка по умолчанию в английской Windows
1200 UTF-16 LE Юникод для работы с файлами Windows в формате UTF-16
20866 KOI8-R Кириллица в старых Unix-системах и email-сообщениях

Примеры использования

Узнать текущую кодировку окна CMD

Перед любым переключением полезно зафиксировать исходное значение.

CHCP

Команда выведет строку вида Текущая кодовая страница: 866. Запомните число — понадобится для возврата к исходному состоянию.

Переключиться на UTF-8 для работы со скриптами

Python, Node.js и большинство современных инструментов работают с UTF-8. Если скрипт выводит кракозябры, переключите кодировку терминала.

CHCP 65001

После этого вывод скрипта в UTF-8 будет отображаться корректно. Некоторые старые консольные приложения могут работать некорректно в UTF-8 — для них переключитесь обратно.

Исправить отображение кириллицы в старых bat-файлах

Bat-файл создан в кодировке Windows-1251, но CMD показывает нечитаемые символы.

CHCP 1251

Текст в консоли переключится на Windows-1251 и кириллица из файла отобразится корректно. Это частая ситуация при работе со скриптами, написанными в Notepad в старых версиях Windows.

Вернуть кодировку OEM 866 для DOS-программ

Запускаете старое DOS-приложение или утилиту, которая использует OEM-кодировку.

CHCP 866

Это кодировка по умолчанию для русской Windows в командной строке. Если после экспериментов что-то сломалось — эта команда вернёт стандартное состояние.

Автоматически устанавливать UTF-8 в скриптах

Нужно, чтобы каждый скрипт работал в правильной кодировке независимо от настроек системы.

@echo off
CHCP 65001 >nul
python myscript.py

Перенаправление >nul подавляет вывод сообщения о смене кодировки. Скрипт будет запускаться в UTF-8 каждый раз.

Проверить список кодовых страниц через справку

Нужно найти номер кодовой страницы для конкретного языка или кодировки.

CHCP /?

Команда выводит краткую справку. Полный список кодовых страниц доступен в документации Microsoft — поиск по запросу «Code Page Identifiers».

Частые ошибки и решения

Проблема Причина Решение
После CHCP 65001 python-скрипт выводит кракозябры Сам скрипт сохранён не в UTF-8 или не указывает кодировку Убедиться, что файл .py сохранён в UTF-8; добавить # -*- coding: utf-8 -*- в начало файла
После CHCP 1251 некоторые символы всё равно отображаются неверно Шрифт консольного окна не поддерживает кириллицу В свойствах окна CMD изменить шрифт на «Lucida Console» или «Consolas»
CHCP изменил кодировку, но после закрытия CMD всё вернулось обратно CHCP меняет кодировку только в текущем сеансе CMD Для постоянного изменения добавить CHCP XXXX в автозапуск через реестр или файл профиля
«Неверная кодовая страница» при вводе корректного номера Указанная кодовая страница не установлена в системе Проверить наличие кодировки в системных настройках; установить дополнительные языковые пакеты через параметры Windows
CMD перестала отображать псевдографику (рамки, линии) после смены кодировки Псевдографика DOS-приложений привязана к кодировке OEM 437 или 866 Вернуться к исходной кодировке: CHCP 866 для русской или CHCP 437 для английской Windows

Когда применять, а когда нет

CHCP применяется когда кодировка вывода в окне CMD не совпадает с кодировкой данных — это проявляется как кракозябры или знаки вопроса вместо нормальных символов. Команда меняет кодировку только для текущего окна терминала и не влияет на кодировку файлов или системные настройки. Не используйте CHCP для изменения кодировки файлов — для этого нужны другие инструменты (например, PowerShell с параметром -Encoding). Аналог в PowerShell: свойство [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 устанавливает кодировку вывода программно, а $OutputEncoding управляет кодировкой передаваемых данных.

FAQ

Какая кодировка стоит по умолчанию в русской Windows?

В русской Windows кодировкой CMD по умолчанию является OEM 866 (CP866). Это наследие DOS-эпохи. В некоторых локализациях Windows 10/11 новая установка может использовать UTF-8 (65001) если включена соответствующая бета-функция в региональных настройках.

Сохраняется ли изменение CHCP после закрытия CMD?

Нет. CHCP меняет кодировку только в текущем окне командной строки. При открытии нового окна CMD кодировка вернётся к системной по умолчанию. Чтобы изменение было постоянным, добавьте команду в ключ реестра HKCU\Software\Microsoft\Command Processor\AutoRun.

Почему после CHCP 65001 часть символов всё ещё отображается неверно?

Причин может быть несколько: шрифт окна не поддерживает нужные символы, приложение не передаёт данные в UTF-8, или файл сохранён в другой кодировке. Проверьте сначала кодировку исходного файла, затем шрифт в свойствах окна CMD.

Влияет ли CHCP на кодировку файлов, которые создаёт CMD через оператор >?

Да. Когда вы перенаправляете вывод в файл (команда > файл.txt), файл создаётся в активной кодировке CMD. Если нужен файл в UTF-8 — сначала выполните CHCP 65001, затем перенаправляйте вывод.

Как установить UTF-8 постоянно для всех окон CMD?

Откройте редактор реестра, найдите ключ HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor, создайте строковое значение AutoRun со значением CHCP 65001 >nul. После этого каждое новое окно CMD будет стартовать в UTF-8.

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.