Абракадабра в файле выгруженным из командной строки

Абракадабра в файле выгруженным из командной строки

абракадабра, кракозябрыДобрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз я вам подробно рассказывал, как диагностировать вашу систему, когда у вас нет интернета, судя по комментариям данный материал оказался полезным. Не так давно один из моих приятелей задал мне вопрос, почему при сохранении текстового файла с выводом результатов из командной стоки Windows у него вместо русского языка, отображается какая-то кракозябра. Давайте я покажу, как выкручиваться из данной ситуации.

Описание проблемы

Мой приятель делал диагностику репликации Active Directory и так как полученная диагностическая информация была объемной, он логично попытался сохранить ее в текстовый файл. Напоминаю делается, это вот по такой конструкции:

repadmin /replsummary > c:\temp\replsummary.log

Тут > c:\temp\replsummary.log и есть функция вывода в файл.

При открытии файла он увидел вот такую абракадабры вместо русского текста:


‚аҐ¬п § ЇгбЄ  бў®¤ЄЁ Ї® ९«ЁЄ жЁЁ: 2020-02-14 18:10:03

Ќ з в бЎ®а ¤ ­­ле ¤«п бў®¤ЄЁ Ї® ९«ЁЄ жЁЁ, Ї®¤®¦¤ЁвҐ:
.......

€б室­л© DSA ­ ЁЎ. ¤Ґ«мв  бЎ®Ґў/ўбҐЈ® %% ®иЁЎЄ

Абракадабра в файле выгруженным из командной строки

Согласитесь, что это не очень красиво и читаемо.

Варианты устранения краскозябр в файле после экспорта из cmd

Первый вариант, это использование оболочки PowerShell. PowerShell умеет запускать большую часть утилит, к которым вы привыкли в командной строке, у него для этого есть алиасы в виде командлетов. Самое классное, что в отличии от cmd он сохраняет данные в нормальном виде, даже если они по русски. Для примера я выполню в PowerShell предыдущую команду;

repadmin /replsummary > c:\temp\replsummary.log

В результате вы сразу можете оценить его преимущество и еще раз задуматься, чтобы использовать его.

Исправление кривой кодировки через PowerShell

Так же вы можете использовать командлет PowerShell под названием Out-File, он позволяет производить вывод полученных данных в виде файла, единственное не забываем указать нужное место, так же если места нет, вы его можете создать с помощью ключа -Force.

repadmin /replsummary | Out-File c:\temp\replsummary.log

Убираем кракозябры в экспортируемом файле из cmd

Если же вы хотите использовать именно командную строку, то вам необходимо перед вашей командой или в скрипте в самом начале выполнить вот эти строки:

@echo off
chcp 855 (По умолчанию в командной строке стоит — 866 или 1251)

В результате чего на выходе я получил положительный результат и никакой абракадабры вместо русского текста я не увидел.

Настройка правильной кириллицы при экспорте текстового файла через командную строку

Вот пример бат файла, где я использовал кодировку chcp 855.

Применение кодировки 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).

Идентификаторы кодовой страницы

В командной строке от имени администратора выполните команду по добавлению ключа:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 855

Выглядеть это будет вот так

Убираем кракозябры через реестр

Так же создать ключ реестра можно и через PowerShell, вот такими командами:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 855

создать ключ реестра можно и через PowerShell

Надеюсь, что у вас теперь все будет в читаемом виде. На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

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

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