@daniil14056

Компиляция в командной строке с++, краккрозябры вместо руcских букв?

Компилирую в cmd стоит кодировка 1251.
"g++ main.cpp -o main.o"
"main.o"
#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {
    setlocale(LC_ALL, "Russian");// 10ки вариантов испробовал
    char *name;
    cout<< "Введите ваше имя "; // Введе ваше РёРјСЏ hjh
   
    
    //system("pause");
    return 0;
}

Вывод: Введе ваше РёРјСЏ hjh
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 1
DanielDemidko
@DanielDemidko
Программист
Во первых, лучше чтобы все файлы исходного кода были в Unicode (utf16). Так все русские (и другие) буквы, переживут компиляцию нормально.
Во вторых, для работы с такими строками в стандартной библиотеке есть классы wcout, wstring и так далее, ими и пользуйтесь.
В чем проблема функции setlocale? В том что она делает правильным вывод на консоль, а читать будет русский с консоли как кракозябры.
Вот правильный способ:

// Кодировка Unicode
#include <iostream>
#include <string>

int main() {
    // Устанавливаем кодовую страницу как у пользователя на компьютере
    std::locale::global(std:: locale(".OCP"));
     // Строки с юникодом должны начинаться с префикса L
    std::wcout << L"Русский текст в консоли";
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы