Кодировка в bat файлах
В этой статье я хочу поговорить о кодировке русского текста в bat файлах. Имеются различные способы правильного отображения кирилицы в bat файлах. Некоторые из достаточно запутанные и сложные. Так как я сторонник простоты и эфффективности, то в этой статье я разберу два самых простых способа, которых вам будет достаточно в самых различных ситуациях.
Создадим какой-нибудь bat файл, так называемый батник. Будет он называться test.bat. Ранее с помощью обычного блокнота, в нём были набраны строки:
При запуске его как bat файла, выводятся две строки. Одна на латинице, другая на кирилице.
Итак, что мы видим, строка на латинице выводится без изменений, строка на кирилице в виде каких-то скрякозябров. Это то, что случается в случае не правильной кодировки. Теперь давайте разберёмся, почему так получилось, и как это поправить.
Первое, документ test.bat обработал и вывел интерпритатор командной строки(cmd). Cmd кодирует програмный код в своей кодировке. Это, так называемая, DOS кодировка. Как подробнее узнать, какая это кодировка?
Откройте test.bat в любом текстовом редакторе(я воспользуюсь Notepad++). Наберите команду chcp.
Это команда покажет, в какой кодировке выполняет cmd bat файл. Сохраните документ и запустите его.
Итак, мы видим строку: Текущая кодовая страница: 866. Это говорит о том, что cmd кодирует bat файл в кодировке 866. Теперь выясним, в какой кодировке закодирован наш bat файл. Для этого можно открыть его в том текстовом редакторе, который показывает кодировку документа. Я воспользуюсь для этого редактором Notepad++. Открыв в нём test.bat в нижней правой части мы видим кодировку Windows-1251.
Теперь мы видим несоответствие в кодировках. Что нужно сделать? Нужно перекодировать документ test.bat в ту кодировку, в которую кодирует документ интерпритатор командной строки. Как это сделать? Открыв документ test.bat в текстовом редакторе Notepad++, в верхнем горизонтальном меню выберите: Кодировки > Кодировки > Кирилица > ОЕМ866.
Теперь в Notepad++ там, где была кодировка Windows-1251, стала ОЕМ866. Не забывайте сохранять документ после различных манипуляций с ним. Теперь можно опять запустить уже перекодированный файл test.bat.
Мы видим, что и кирилица и латиница стали корректно отображаться после работы команды вывода echo в test.bat.
Что если у вас на компьютере нет редактора Notepad++, и вы принципиально не хотите его устанавливать. Или текст вы не набирали сами, а где-то скачали его, и он в DOS кодировке.
К примеру, вы хотит скачать в текстовый файл справочник команд CMD. Создайте в папке С файл Help.txt. Запустите на выполнение bat файл со следующим кодом.
Вот текст записанный в файл Help.txt.
Теперь добавьте в bat файл следующую строку: «chcp 1251 >nul». Она аннулирует действующую кодировку 1251, которая мешает нам читать кирилицу.
И запустите его на выполнение.
Мы разобрали два простых способа, как в bat файлах настроить кодировку для правильного отображения русского текста. Надеюсь моя статья была вам полезна.
Настройка кодировки шрифтов в cmd/bat (иероглифы, кракозябры)
В некоторых случаях, когда используется неверная кодировка, могут возникать так называемые кракозябры или иероглифы, т.е. не читаемые символы, которые невозможно разобрать при работе с командной строкой. Эти проблемы могут также возникать и при запуске различных BAT-файлов. В данной статье мы расскажем о том, как можно сменить шрифт или кодировку, чтобы избавиться от этой проблемы. Пример таких не читаемых символов можно видеть на картинке ниже:
Исправляем проблему с кодировкой с помощью смены шрифта
Первым делом нужно зайти в свойства окна: Правой кнопкой щелкнуть по верхней части окна -> Свойства -> в открывшемся окне в поле Шрифт выбрать Lucida Console и нажать кнопку ОК.
После этого не читаемые символы должны исчезнуть, а текст должен выводиться на русском языке.
Исправляем проблему с кодировкой с помощью смены кодировки
Вместо смены шрифта, можно сменить кодировку, которая используется при работе cmd.exe.
Узнать текущую кодировку можно введя в командной строке команду chcp , после ввода данной команды необходимо нажать Enter .
Как видно на скриншоте, текущая используемая кодировка Windows-1251
Для изменения кодировки нам необходимо воспользоваться командой chcp , где — это сам код кодировки, на которую мы хотим переключиться. Возможные значения:
- 1251 — Windows-кодировка (Кириллица);
- 866 — DOS-кодировка;
- 65001 — Кодировка UTF-8;
Т.е. для смены кодировки на DOS, команда примет следующий вид:
Для смены кодировки на UTF-8, команда примет следующий вид:
Для смены кодировки на Windows-1251, команда примет следующий вид:
Русский текст в консоли
мы получим «абракадабру»:
Почему так происходит?
Консоль работает в кодировке DOS (codepage 866).
Блокнот Windows создает пакетный файл в кодировке WIN (codepage 1251).
Поэтому, когда Вы запускаете файл, консоль отображает его в своей (DOS) кодировке.
1 способ (сохранение файла в кодировке OEM-866):
Скачаем текстовый редактор, поддерживающий сохранение текста в кодировке OEM-866 (DOS) :
Чтобы создать новый файл в кодировке DOS:
Меню «Файл» -> «Сохранить как. » -> из выпадающего списка выбрать «Кодировка OEM-866«.
Файл должен иметь расширение bat или cmd.
Для себя я настроил AkelPad так, чтобы он всегда сохранял в кодировке OEM-866 (Настройки -> Параметры -> Кодировка по-умолчанию -> OEM-866.)
Скачать.
Сам пользуюсь вот такой модификацией что и Вам советую. Скачать.
Или качаем с официального сайта.
Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей :
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню «Кодировки» -> выбрать «Сохранить в DOS-866«.
4) Вставить код.
5) Сохранить, запустить.
Полезные горячие комбинации клавиш:
Запуск скрипта (Ctrl + F5)
На весь экран (F11)
Сохранить (Ctrl + S)
Открыть в кодировке WIN (Alt + W)
Открыть в кодировке DOS (Alt + D)
Чтобы создать новый файл в кодировке DOS:
Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
«Файл» -> «Сохранить как. » -> пишем имя файла и расширение bat или cmd -> Сохранить.
Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей :
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
4) Вставить код.
5) Сохранить, запустить.
Помните: в редакторе не должно быть видно «крякозябер», иначе это значит: Вы неправильно скопировали код.
В Windows Vista, 7 часто бывает, что код с форума «портиться» в буфере. Выход: когда копируете код, убедитесь, что включена русская раскладка клавиш.
2 способ (смена кодовой страницы):
Сменить кодовую страницу консоли.
А именно, в начале пакетного файла написать:
The bat windows 1251
Сообщения: 3665
Благодарности: 1562
файл в кодировке utf-8 преобразовать в windows-1251 » |
——-
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail — для этого есть форум
Это сообщение посчитали полезным следующие участники:
в ХР по умолчанию нет utf16, надо устанавливать » |
поясните плз, AFAIK utf16le (=Unicode) Native-кодировка начиная с Win2K
Батник с chcp 65001 сразу вылетает » |
——-
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail — для этого есть форум
The bat windows 1251
Сообщения: 3665
Благодарности: 1562
файл в кодировке utf-8 преобразовать в windows-1251 » |
——-
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail — для этого есть форум
Это сообщение посчитали полезным следующие участники:
в ХР по умолчанию нет utf16, надо устанавливать » |
поясните плз, AFAIK utf16le (=Unicode) Native-кодировка начиная с Win2K
Батник с chcp 65001 сразу вылетает » |
——-
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail — для этого есть форум