Как исправить кривую кодировку в терминале

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

# например вот
Нажмите клавиши  [1mCTRL+C [0m, чтобы остановить хост приложений и выйти.

Поэтому сегодня поговорим, как избавиться от проблемы.

Вариант 1.

Открываем PowerShell и вводим команду:

notepad $PROFILE

Если появляется сообщение о том, что путь не найден (или файл не найден и т.д.), то создадим этот файл прямо там же в PowerShell (далее PS)

New-Item -Path $PROFILE -ItemType File -Force

Эта команда создает нужный файл профиля. Далее в открывшемся блокноте вставляем текст:

[console]::InputEncoding  = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding           = [System.Text.Encoding]::UTF8

Сохраняем и закрываем файл.

Теперь при выполнении команды notepad $PROFILE откроется этот самый файл профиля в блокноте, а команда $PROFILE покажет его расположение. После перезапуска терминала проблема должна покинуть нас навсегда.

Вариант 2.

Менее сложный, но могут быть нюансы. В поиске (Win11 и Win10) вводим Региональные стандарты Во вкладке "Дополнительно" нажимаем "Изменить язык системы" и в открывшемся окне отмечаем галочку "Использовать Юникод..." Поскольку это всё ещё Бета-версия, возможны нюансы при работе со старыми (консольными?) приложениями. Не встречал сам, но надо иметь ввиду.

Вариант 3.

Самый надежный, потому что требует минимум действий. Будем использовать Windows Terminal. В свежих версиях Win11 он доступен "из коробки", если его нет, то устанавливается из PS:

winget install Microsoft.WindowsTerminal

Далее, открываем PowerShell, Параметры => Приложение терминала по умолчанию => Windows Terminal В общем-то и всё. Внутри Windows Terminal работает сразу с UTF8, так что проблем с кодировкой не будет. Как внутри терминала, так и в студии. Кстати, его же можно подключить и в VS Code.