Командная строка Windows по умолчанию использует DOS-кодировку, но её можно изменить на UTF-8. В этой статье покажу как.
Возможные кодировки и команда chcp
Командная строка Windows может работать с тремя типами кодировок:
- DOS-кодировка — её код 866;
- Windows-кодировка (Кириллица) — её код 1251;
- Unicode UTF-8 — её код 65001.
По умолчанию командная строка Windows использует DOS-кодировку. Чтобы это проверить, выполните команду chcp без аргументов:
>chcp Текущая кодовая страница: 866
В качестве аргумента вы можете передать код нужной кодировки, например так:
>chcp 65001 Active code page: 65001
Но эта кодировка будет работать только в этом экземпляре командной строки. А было бы удобно, чтобы в командной строке по умолчанию использовалась бы кодировка UTF-8.
Меняем кодировку Windows на UTF-8 перманентно
В Windows 10 (сборке 1809) появилась специальная настройка, которая позволяет использовать Unicode UTF-8. Про это я узнал на этом форуме.
Чтобы задействовать эту опцию перейдите в параметры системы и затем перейдите в меню «Время и язык»:
От туда перейдите в меню «Язык» и нажмите на «Административные языковые параметры»:
Затем перейдите на вкладку «Дополнительно», нажмите на кнопку «Изменить язык системы». И в открывшемся окне «Региональные стандарты» поставьте галочку «Бета-версия: Использовать Юникод (UTF-8) для поддержки языка во всем мире»:
После этого, вам потребуется перезагрузить систему. А после перезагрузки командная строка будет по умолчанию использовать кодировку UTF-8.
Кстати, у меня сейчас Windows 10 версии 22H2 (сборка 19045.3930). И до сих пор эта опция находится в Бета версии. Но после переключения я проблем не заметил.
Слава Науке! Храни вас Господь, спасибо!
Во-первых, chcp 65001 не работает. Во всяком случае, сообщения psql остаются кракозябрами. Во-вторых, «Бета-версия: Использовать Юникод (UTF-8) для поддержки языка во всем мире» работает, но в то же время ломает кодировку в некоторых других приложениях.
В моём случае chcp 65001 работал. А вот про настройку согласен, это действительно ломает кодировку многих приложений, поэтому немного поработав с этим я её отключил.