Не корректно отображается Русский текст в CMD? Решение есть!

2014-01-19 Комментарии: 6 Посмотров: 37423

Как корректно отобразить Русский текст в CMD. Проблемы с кодировкой могут возникнуть, например, при выполнении Bat файла, когда нужно вывести в консоль русский текст и при других обстоятельствах, о которых речь пойдёт далее.

Рассмотрим пример: когда нужно вывести в консоль Русский текст, скажем «Примет мир». Для этого создадим Bat файл с именем «1.bat». Используйте для этого обычный Блокнот Windows (Notepad.exe) Запишем в него  следующие строки!

@Echo off

  echo.
     echo ПРИВЕТ МИР
    echo.
 Pause

Для тех, кто не понял или не в курсе, строчки «echo.» я добавил специально, что бы были отступы, от строки «Примет мир»

Теперь запускаем файл 1.bat и результат будет такого вида.

Русский текст в CMD

Как видим проблема с кодировкой в cmd на лицо. И произошло это по следующей причине.

Стандартный блокнот Windows сохранил Bat файл в кодировке «1251» а консоль вывела его в кодировки «866». Вот от сюда все проблемы!

Решения проблемы с кодировкой в CMD. 1 Способ.

Для решения проблемы нужно просто использовать текстовой редактор, с помощью которого можно сохранить текст в кодировке «866». Для этих целей прекрасно подходит «Notepad++» (Ссылку для загрузки Вы можете найти в моём Twitter-e).

Скачиваем и устанавливаем на свой компьютер «Notepad++».

После запуска «Notepad++» запишете в документ те же строки, которые мы уже ранние записывали в стандартный блокнот.

@Echo off

  echo.
     echo ПРИВЕТ МИР
    echo.
 Pause

Теперь осталось сохранить документ с именем «2.bat» в правильной кодировке. Для этого идём в меню «Кодировки > Кодировки > Кириллица > OEM-866»

cmd сменить кодировку

и теперь сохраняем файл с именем «2.bat» и запускаем его! Поле запуска результат на лицо.

cmd смена кодировки

Как видим, текст на Русском в CMD отобразился, как положено.

Решения проблемы с кодировкой в CMD. 2 Способ.

Теперь рассмотрим ещё одну ситуацию, когда могут возникнуть проблемы с кодировкой в CMD.

Допустим, ситуация требует сохранить результат выполнения той или иной команды в обычный «TXT» файл. В приделах этого поста возьмём для примера команду «HELP».

Задача: Сохранить справку CMD в файл «HelpCMD.txt. Для этого создайте Bat файл и запишите в него следующие строки.

@Echo off

 Help > C:\HelpCMD.txt
 Pause

После выполнения Bat файла в корне диска «C:\» появится файл «HelpCMD.txt» и вместо справки получится вот что:

поменять кодировку cmd

Естественно, такой вариант не кому не понравится и что бы сохранить справку в понятном для человека виде, допишите в Bat файл строку.

chcp 1251 >nul

Теперь содержимое кода будет такое.

@Echo off
chcp 1251 >nul

Help > C:\HelpCMD.txt

Pause

После выполнения «Батника» результат будет такой:

поменять кодировку cmd

Вот так на много лучше, правда?

Пожалуй, на этом я закончу пост. Добавить больше нечего. Если у Вас имеются какие-то соображения по данной теме, буду рад Вашему комментарию к посту.

2014-01-19 Комментарии: 6 Посмотров: 37423Помогла статья? Оставьте отзыв
1-22-2014Константин: нету

По поводу Notepad++ не догадывался. Спасибо за информацию.

Ответить
8-18-2014Анатолий Ухванов: anatoliy.ukhvanovy.name

А вот как бы наоборот сделать: отобразить на экране файл, сохранённый в кодировке win1251?

Ответить
    1-2-2016oak.ex_: acupoftea2016.ucoz.net

    Для этого есть команда chcp 1251…

    Ответить
      1-4-2016АнатолийУхванов: anatoliy.ukhvanovy.name

      Спасибо, oak.ex_! Действительно, это работает. Проверял так: (может, кому пригодится)
      Я создал файл обычный в кодировке windows-1251, назвал его «test.bat». Вот его содержимое (без чёрточек):
      —————————————————
      @echo off
      chcp 1251
      echo Сейчас этот файл напечатает на экране сам себя.
      type %0
      pause
      —————————————————
      Вот, что он напечатал на экране, когда я его запустил (опять, без чёрточек):
      —————————————————
      Текущая кодовая страница: 1251
      Сейчас этот файл напечатает на экране сам себя.
      @echo off
      chcp 1251
      echo Сейчас этот файл напечатает на экране сам себя.
      type %0
      pause
      Для продолжения нажмите любую клавишу . . .
      —————————————————

      Ответить
        1-4-2016АнатолийУхванов: anatoliy.ukhvanovy.name

        То есть, после команды chcp 1251:
        1. команда echo читала данные из bat-файла именно в этой кодировке
        2. команда type читала данные из входящего файла тоже именно в этой кодировке.

        Ответить
11-30-2016Алексей

Предлагаю дополнить вариант с utf-8.
1. Врубаем в notepadd++ у файла кодировку UTF-8
2. Запускаем командную сроку в левом верхнем углу окна командной строки жмем на иконку левой кнопкой мыши. Затем свойства в выпадающем меню.
3. На вкладке шрифт выбираем «Lucida Console» и жмем ок.
4. теперь в файле в начале задаем кодировку chcp 65001
5. и теперь текст будет нормальной кириллицей с поддержкой Utf-8)

Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *