Конвертер кодировок текста

Кракозябры в командной строке Windows и bat-файлах

Исправить текст в конвертере ↓

Командная строка Windows по историческим причинам работает в своей кодировке — OEM. В русской версии системы это DOS-кодировка CP866, а не Windows-1251 и не UTF-8, в которых работают графические программы. Узнать текущую кодировку консоли можно командой chcp: ответ «Текущая кодовая страница: 866» означает CP866.

Типичные случаи

Что видноГдеЧто произошло
╨Я╤А╨╕╨▓╨╡╤ВВ консолиПрограмма или bat-файл выводит UTF-8, а консоль показывает его в CP866
ЏаЁўҐвВ файле, открытом в БлокнотеВывод консоли (команда > file.txt) записан в CP866, а Блокнот читает его как Windows-1251
╧ЁштхЄВ консолиBat-файл сохранён в Windows-1251 (ANSI), а консоль работает в CP866
я╗┐@echo off и ошибка «не является внутренней или внешней командой»В консолиBat-файл сохранён в UTF-8 с BOM: метка в начале файла прилипла к первой команде

Испорченный текст из консоли или файла вывода можно исправить в конвертере ниже кнопкой «Определить кодировку текста».

Как писать bat-файлы с русским текстом

Вариант 1 — UTF-8. Первой строкой файла поставьте chcp 65001 >nul, а сам файл сохраните в UTF-8 без BOM (в Блокноте это пункт «UTF-8», а не «UTF-8 с BOM»; в Notepad++ — «Кодировки» → «Преобразовать в UTF-8 без BOM» или просто «UTF-8»). Команда chcp 65001 переключает консоль в UTF-8 до конца работы окна.

Вариант 2 — CP866. Сохраните bat-файл в кодировке OEM 866: в Notepad++ выберите «Кодировки» → «Кириллица» → «OEM 866» и наберите текст заново либо перекодируйте файл в конвертере (загрузите его и скачайте в CP866). Так файл будет работать и на старых системах.

Как получить файл вывода в нормальной кодировке

  • Выполните перед командой chcp 65001 — вывод многих программ станет UTF-8.
  • Если файл уже записан, загрузите его в конвертер: текст вида «ЏаЁўҐв» он исправит, а результат можно скачать в UTF-8 или Windows-1251.
  • В PowerShell 5.1 используйте | Out-File file.txt -Encoding utf8 вместо >, который записывает UTF-16.

Частые вопросы

Можно ли один раз переключить консоль на UTF-8 навсегда?
В Windows 10 и 11 есть параметр «Бета-версия: Использовать Юникод (UTF-8) для поддержки языка во всем мире» в настройках региона и языка. Он переводит в UTF-8 и консоль, и все программы, рассчитанные на Windows-1251, поэтому старые программы после него могут сами начать показывать кракозябры. Надёжнее ставить chcp 65001 в начале нужных скриптов.
После chcp 65001 буквы всё равно не видны, а вместо них квадратики. Почему?
Это уже не кодировка, а шрифт: растровый шрифт старой консоли не содержит нужных символов. Выберите в свойствах окна шрифт Consolas или Lucida Console либо используйте Windows Terminal.