Абракадабра в файле выгруженным из командной строки
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз я вам подробно рассказывал, как диагностировать вашу систему, когда у вас нет интернета, судя по комментариям данный материал оказался полезным. Не так давно один из моих приятелей задал мне вопрос, почему при сохранении текстового файла с выводом результатов из командной стоки Windows у него вместо русского языка, отображается какая-то кракозябра. Давайте я покажу, как выкручиваться из данной ситуации.
Описание проблемы
Мой приятель делал диагностику репликации Active Directory и так как полученная диагностическая информация была объемной, он логично попытался сохранить ее в текстовый файл. Напоминаю делается, это вот по такой конструкции:
Тут > c:\temp\replsummary.log и есть функция вывода в файл.
При открытии файла он увидел вот такую абракадабры вместо русского текста:
‚аҐ¬п § ЇгбЄ бў®¤ЄЁ Ї® ९«ЁЄ жЁЁ: 2020-02-14 18:10:03
Ќ з в бЎ®а ¤ ле ¤«п бў®¤ЄЁ Ї® ९«ЁЄ жЁЁ, Ї®¤®¦¤ЁвҐ:
.......
€бе®¤л© DSA ЁЎ. ¤Ґ«мв бЎ®Ґў/ўбҐЈ® %% ®иЁЎЄ
Согласитесь, что это не очень красиво и читаемо.
Варианты устранения краскозябр в файле после экспорта из cmd
Первый вариант, это использование оболочки PowerShell. PowerShell умеет запускать большую часть утилит, к которым вы привыкли в командной строке, у него для этого есть алиасы в виде командлетов. Самое классное, что в отличии от cmd он сохраняет данные в нормальном виде, даже если они по русски. Для примера я выполню в PowerShell предыдущую команду;
В результате вы сразу можете оценить его преимущество и еще раз задуматься, чтобы использовать его.
Так же вы можете использовать командлет PowerShell под названием Out-File, он позволяет производить вывод полученных данных в виде файла, единственное не забываем указать нужное место, так же если места нет, вы его можете создать с помощью ключа -Force.
Если же вы хотите использовать именно командную строку, то вам необходимо перед вашей командой или в скрипте в самом начале выполнить вот эти строки:
chcp 855 (По умолчанию в командной строке стоит — 866 или 1251)
В результате чего на выходе я получил положительный результат и никакой абракадабры вместо русского текста я не увидел.
Вот пример бат файла, где я использовал кодировку chcp 855.
Убираем кракозябры через реестр
В реестре Windows есть ветка "HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe", где вы можете создать ключ CodePage со значением 855. Напоминаю, что из себя представляют эти трехзначные цифры, обратите внимание, что 855 это именно кириллица (Дополнительно можно почитать https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers).
В командной строке от имени администратора выполните команду по добавлению ключа:
Выглядеть это будет вот так
Так же создать ключ реестра можно и через PowerShell, вот такими командами:
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 855
Надеюсь, что у вас теперь все будет в читаемом виде. На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Описание познавательно и полезно, но Автор публикации мог зделать ссылку на готовый файл реестра, зачем мучатся по описанию, если можна двойным щелчком мишки раз и запись в реестре готова. Была цель помочь людя то файл бы помог.
———————————————————————————————————
1.Создать пустой текстовый файл(.txt) , открыть добавить :
———————————————————————————————————
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
«CodePage»=dword:00000855
———————————————————————————————————
2.Закрыть файл(.txt), переименовать расширение (.txt) на (.reg) . после переименования двойным щелчком мишки и запись в реестре добавлена.
———————————————————————————————————-