Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ проблемма русификации консоли. не могу сделать чтобы консоль была русской

Михаил Мыслитель (6714), закрыт 12 лет назад


если внимательно посмотрите то увидите что в консоле первая строчка совсем по русски не отображаетсЯ.
и еще обратите внимание, я перебробовал три разных способа подключения русского кода, часть из них под уже коментарии записана.
сам код блокс (в нем пишу я) сохраняет файл в виндовс-1251 кодировке.
что делать не знаю
Лучший ответ
ra Высший разум (113320) 12 лет назад
GCC для винды не поддерживает установку русской локали (функция setlocale), а SetConsoleOutputCP будет работать, если для консольного окна установишь шрифт TrueType. Попробуй конвертировать:

#include <windows.h>
#include <iostream>
#include <cstring>
#include <string>

using namespace std;

string ru(const char *s) {
    char *b = new char[strlen(s)];
    CharToOem(s, b);
    string r(b);
    delete[] b;
    return r;
}

string ru(string &s) { return ru(s.c_str()); }

int main() {
    string s = "русский текст в консоли (string)\n";
    cout << ru(s);
    cout << ru("русский текст в консоли (char [])\n");
    return 0;
}

ЗЫ:
Лучше не парься и сохраняй в кодировке cp866, или вообще выводи сообщения на английском.
МихаилМыслитель (6714) 12 лет назад
работает но только бы разобратьсЯ)))
МихаилМыслитель (6714) 12 лет назад
сохранил в кодировке виндовс-1251 работает, а кодировка 866 не нашел такой. только 936
ra Высший разум (113320) Имел ввиде, что если сохранять в кодировке 866, то вообще никаких левых функций использовать не надо. 866 -- досовская кодировка, странно что в Code::Blocks не включена ее поддержка.
Остальные ответы
Степан Клевлеев Профи (960) 12 лет назад
#include >iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Русский текст в консоли" << endl;
return 0;
}
Андрей ВласовОракул (54479) 12 лет назад
О как...
Спасибо, не знал.
МихаилМыслитель (6714) 12 лет назад
нет не помогло. возможно в визуал работает но не в код блоксе
Степан Клевлеев Профи (960) #include <iostream> #include <locale> int main() { std::locale rus("rus_rus.866"); std::wcout.imbue(rus); std::wcout << L"Привет, мир!!!"; return 0; }
Андрей Власов Оракул (54479) 12 лет назад
В редакторе у тебя кодировка CP1251, а в консоли CP866.
Привет от DOS. :)
Перед выводом в консоль надо менять кодировку в сообщениях.
МихаилМыслитель (6714) 12 лет назад
я чтото подобное читал уже. но так и не понял что где какая кодировка. помогай мне. настроить надо
Андрей Власов Оракул (54479) А как Степан предлагает сделать не получается?
Ярослав Паюсов Мастер (1815) 7 лет назад
Для Clion:

Cygwin - при установке в выборе пакетов нужно найти и отметить всякие cmake, GDB и прочие, кем-нибудь рекомендуемые к установке.
Сlion - File - Settings - Editor - File Encodings: IDE Encoding, Project Encoding, main.cpp (Ваш исполняемый файл) - UTF-8,
Default encoding for properties files - IBM866
В окне редактора внизу - UTF-8.
#include

SetConsoleCP(866); SetConsoleOutputCP(866);
Ярослав ПаюсовМастер (1815) 7 лет назад
Включить заголовочный файл windows.h
Похожие вопросы