Русский язык в Visual Studio. Что делать, если ничего не помогает

Превью к статье о том, как исправить русский язык в visual studio

При написании программ в среде Visual studio иногда возникает необходимость вывода текста на русском языке. Казалось бы, что тут сложного? Берёшь и выводишь! А вот нет, иначе бы не было кучи форумов и страничек в интернете с этой проблемой.
А проблема заключается в кодировке, причём все сайты пишут работающие способы, но, к сожалению, далеко не у всех. В этой статье мы расскажем вам о том, как действительно нужно исправлять эту проблему.

Итак, вы написали программу, в которой решили вывести строку русскими буквами, например, "Русский язык в консоли!". Вы запускаете программу, но вместо заветной строки видите там "кракозябры"! Что же делать?

#include <iostream>

int main() {
	std::cout << "Русский язык в консоли!" << std::endl;
	getchar();
	return 0;
}
Программа, выводящая русскую строку в visual studio
В результате видим кракозябры
В результате видим кракозябры

Чаще всего пишут, что достаточно лишь добавить setlocale(LC_ALL, "Russian"); в начале программы (для C программ требуется подключение библиотеки locale.h: #include <locale.h>). Сделаем это. Теперь программа должна выглядеть так:

#include <iostream>
#include <locale.h>

int main() {
	setlocale(LC_ALL, "Russian");
	std::cout << "Русский язык в консоли!" << std::endl;
	getchar();
	return 0;
}
Программа, выводящая русскую строку в visual studio

А возможный результат может выглядеть так:

Результат может быть как корректным, так и кракозябристым
Результат может быть как корректным, так и кракозябристым

Запустим её, если русский язык уже выводится - поздравляем! Проблема решена! Если нет, то идём дальше.

В верхнем меню выберете пункт файл, Сохранить <название вашего файла> как. В открывшемся окне вместо Сохранить выберем Сохранить с кодировкой, подтвердим, что желаем заменить файлы и выберем кодировку Кириллица (Windows) - кодовая страница 1251.

Сохраняем файл в другой кодировке
Сохраняем файл в другой кодировке
Выбираем сохранение с кодировкой
Выбираем сохранение с кодировкой
Выбираем кодировку Кириллица (Windows) - кодовая страница 1251
Выбираем кодировку Кириллица (Windows) - кодовая страница 1251

Нажмём ОК и соберём программу заново.

Нужная кодировка - Кириллица (Windows) - кодовая страница 1251
Нужная кодировка - Кириллица (Windows) - кодовая страница 1251

Запустим программу вновь и теперь русский язык будет корректно выводиться!

Программа запустилась и русский язык выводится
Программа запустилась и русский язык выводится

UPD: Ещё один способ заставить работать русский язык

Если ничего из вышеперечисленного не помогло, значит проблема в кодировке самой консоли. А её можно изменить с помощью команды system("chcp 1251");, то есть программа будет выглядеть так:

#include <iostream>
#include <locale.h>
#include <cstdlib>

int main() {
	setlocale(LC_ALL, "Russian"); // задаём русский текст
	system("chcp 1251"); // настраиваем кодировку консоли
	std::cout << "Русский язык в консоли!" << std::endl;
	getchar();
	return 0;
}