CHCP (Change Code Page) — команда CMD для просмотра и смены кодовой страницы в окне командной строки Windows. Решает главную боль при работе со скриптами: кириллица отображается кракозябрами, потому что кодировка терминала не совпадает с кодировкой файла. Одна команда устраняет проблему без правки скриптов.
- Синтаксис команды CHCP
- Ключи и параметры
- Примеры использования
- Узнать текущую кодировку окна CMD
- Переключиться на UTF-8 для работы со скриптами
- Исправить отображение кириллицы в старых bat-файлах
- Вернуть кодировку OEM 866 для DOS-программ
- Автоматически устанавливать UTF-8 в скриптах
- Проверить список кодовых страниц через справку
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Какая кодировка стоит по умолчанию в русской Windows?
- Сохраняется ли изменение CHCP после закрытия CMD?
- Почему после CHCP 65001 часть символов всё ещё отображается неверно?
- Влияет ли CHCP на кодировку файлов, которые создаёт CMD через оператор >?
- Как установить UTF-8 постоянно для всех окон CMD?
Синтаксис команды 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.


