Изначально файл программы набирался в Notepad++(по умолчанию utf-8). Много разрозненного русского текста. При работе через MINGW64 русский выводился без проблем. При использовании файлов в Visual Studio 2017 вылезли непонятные символы.
#include <Windows.h>
SetConsoleOutputCP(CP_1251);
меняет тип кодировки, но кракозябры не исчезают...
#include <clocale>
setlocale(LC_CTYPE, "rus");
ничего не поменял.
Кусочек кода из программы:
cout << "Укажите количество датчиков для внесения в базу данных, " <<
"либо 0 для выхода.\n";
Как исправить ситуацию, не переписывая русский текст?
Проверьте шрифт в консоли на поддержику кирилицы/UTF8. (ПКМ по окну консоли — шрифты) Так, как ваш код отлично работает на моем ПК.
Как другой вариант попробуйте использувать SetConsoleOutputCP(CP_UTF8)
(код взят из ответа на похожий вопрос):
#include <iostream>
#include <Windows.h>
int main() {
SetConsoleOutputCP(CP_UTF8);
std::cout << u8"Greek: αβγδ\n Привет!\n" << std::flush;
getchar();
return 0;
}
Ваш код неправильно использует setlocale. Для UTF8 должно быть так:
setlocale(LC_ALL, "ru_RU.utf8");
Кроме того, строковые литералы нужно явно объявить как UTF8:
cout << u8"Укажите количество датчиков для внесения в базу данных, ";
При соблюдении этих условий, русский (и только русский) текст в консоль выводится будет (но считываться через cin все равно не будет). Если хотите полноценно работать с Unicode в Visual Studio, перейдите на широкие символы, как описано здесь: Русский язык в консоли
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо создать 2 числа из одного с плавающей точкойfloat 15
Пытаюсь написать элементарное окно авторизации (в качестве обучения) и столкнулся со следующей проблемойИмеется определенная кнопка в cpp-файле...
Почему уже при создании множества, вылетает ошибка, хотя не был изменен массив?