В VS 2022 консоли Microsoft не выводятся русские буквы. есть вариант починить?
Пытался всеми способами найти путь решения но ни одна команда не помогла. я начинающий так что пока не разобрался с этим пытаюсь записать русские буквы через setlocale(LC_ALL, "rus")
но ничего не показывается. windows 11
Это самый часто задаваемый вопрос у начинающих программистов на плюсах под виндой.
Буквально вчера писал ответ на подобный вопрос: https://qna.habr.com/q/1224418#answer_2256128
Если искал ответы в гугле и не нашел, значит плохо искал или не так формулировал запрос.
А гуглить пробовали?
Очевидно же, что разные кодировки. Консоль по умолчанию работает с CP866, а студия или с CP-1251 или UTF-8.
Первая ссылка в гугли предлагает сделать SetConsoleOutputCP(866);
P.S. C С++ знаком на уровне написания Hello World и то с помощью гугла.
SetConsoleOutputCP(866) - устанавливает кодировку консоли для вывода. Но если исходники написаны в UTF8 или в cp1251, то это не поможет. Есть аналогичная функция, меняющая кодировку ввода.
Суть проблемы в том, что в виндовой консоли может быть несколько кириллических кодировок, а кодировок исходников может быть еще больше и компилятор и стандартная библиотека C++ сами по себе ничего не делает для синхронизации кодировок при вводе/выводе. И если кодировка консоли и кодировка исходников не совпадает - на выходе получаем кракозябры.
Собственно это с той же страницы, что и первый, хоть и не совсем верный, вариант.
Я особо не вникал, просто смысл в том, что это гуглится элементарно..
Alexander, Не важно. Я же написал, что тут еще играет роль кодировка, в которой написаны исходники.
Если исходники написаны в 1251 - то да поможет. Если нет - не поможет.
У некоторых случается такое совпадение, что кодировка исходников и кодировка консоли совпадает и они с такой проблемой не сталкиваются.
Самый простой способ - писать исходники в cp866, тогда вообще никаких вызовов не нужно делать.
В коментариях к вопросу дал ссылку на свой вчерашний ответ по такому же поводу.
Кстати, можно действовать и со стороны консоли. Выясняем в какой кодировке у нас исходники и меняем кодировку консоли командой:
chcp 866 - устанавливает в консоли кодировку 866
chcp 1251
chcp 65001 - utf8
Кстати, в линуксе (и во всех никсах) кодировка консоли обычно не меняется (в современных дистрибутивах повсеместно используется utf8) и исходники по умолчанию пишутся так же в той же системной кодировке, так что линукс программисты обычно не сталкиваются с такой проблемой.
Хотя и там есть возможность менять кодировку консоли.