none
Изменение кодировки в cmd в Visual Studio 2019 RRS feed

  • Вопрос

  • Собственно, проблема нерабочей кириллицы в cmd в Visual Studio, в консольных приложениях(классические десктопные приложения на c++) при применении в программе кодировки chcp 1251(код: system("chcp 1251"); ) в Windows 10 19041.172 Home Single language(english) осталась нерешенной. Другие операторы типа setlocale и т.д. тоже не имеют действия. Некоторое время назад находил решение на форуме microsoft community, заключавшееся в создании файла реестра для windows, а теперь не могу найти его. В файле реестра кодировка chcp 1251, 1252, 1253, 1254 и вроде что-то ещё менялась на chcp 1251. К сожалению, сам пока не умею создавать подобные вещи, так что прошу помощи :) 
    2 апреля 2020 г. 13:53

Ответы

Все ответы

  • Обычно причины проблемы такие:

    - Самовредительство с разрушением настроек кодировок в реестре. Судя по всему вы уже нарушили работу ОС и если вы не сможете восстановить все как было, то придется переустановить ОС. 

    - Использование 8 битных символов вместо Unicode

    - Неверный код настройки консоли, часто его вообще нет.

    Смотрите ранние обсуждения тут:

    https://social.msdn.microsoft.com/Forums/ru-RU/5957a48c-d516-40e6-8f29-e10e0d6b377e/vs-c?forum=fordesktopru

    https://social.msdn.microsoft.com/Forums/ru-RU/ea9452e3-77d7-4ab0-9c06-a634f1f3b298/-vs-2017?forum=vsru

    Так же покажите код приложения где устанавливается кодировка консоли и происходит вывод.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа JLoGukA 3 апреля 2020 г. 3:45
    2 апреля 2020 г. 16:50
    Модератор
  • Спасибо большое за ответ!
    Дело в том, что в реестр я даже ещё не заходил, а реестровый файл применял на прошлой установке windows 10( той же редакции) - он помог.

    Однако, просмотрев ваши ссылки, я попробовал разные методы вывода и пришёл к тому, что сначала у меня по умолчанию стояла кодировка 1252(скрины до окончания проверки учетной записи прислать не могу), с помощью которой VS пытался представить символы из utf-16 и кидал warning о том, что он не может это сделать - в итоге в консоли одни ? знаки. Вывод с помощью wcout и установка unicode-16(_setmode(_fileno(stdout), _O_U16TEXT);) на вывод помогли. 



    • Изменено JLoGukA 3 апреля 2020 г. 3:45
    3 апреля 2020 г. 3:43