Как исправить кривую кодировку в терминале
Проблема не нова, но крайне раздражающая. Видеть абракадабру из непонятных символов вместо человекочитаемого текста, особенно когда там важная информация, крайне неприятно.
# например вот
Нажмите клавиши [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.