Как записать кириллический текст в консоли C++

Например, если я пишу:

cout << "Привет!" << endl; //it's hello in Russian

В консоли это было бы что-то как ╧ЁштхЄ!.

Хорошо, я знаю, что мы можем использовать:

setlocale(LC_ALL, "Russian");

Но после этого, параметры командной строки на русском языке не работают (если я запускаю свою программу через Bat-файл):

StartProgram.bat

chcp 1251
MyProgram.exe -user=Олег -password=Пароль

Так, после setlocale программа не может считать российские аргументы правильно.

Это происходит, потому что файл the Bat в CP1251, но консоль находится в CP866.

Так, существует вопрос:

Как я могу писать по-русски текст в консоли C++ и в то же время, российские параметры командной строки читали правильно.

14
задан ctype.h 3 April 2013 в 05:05
поделиться

3 ответа

См. эту запись из блога Майкла Каплана:

http://www.siao2.com/2008/03/18/8306597.aspx

7
ответ дан 1 December 2019 в 13:47
поделиться

Вы пробовали использовать wcout ? Он похож на cout , но принимает «широкие» символы, что должно допускать правильное кодирование Unicode.

Эта статья о локализации и другая , обе из MSDN могут быть полезны.

5
ответ дан 1 December 2019 в 13:47
поделиться

Установили ли вы русский язык для программ, отличных от Unicode, в разделе «Язык и региональные стандарты» панели управления?

(У меня есть я не знаю, какова может быть обычная установка для русскоязычных программистов; я просто задаюсь вопросом, распространено ли это установить на какой-то английский, чтобы не сбивать с толку слишком узкие инструменты.)

Если моя память не играет трюков, когда я работал с некоторым кодом от японских разработчиков, именно на этом шаге консоль правильно отображала не-Unicode японский текст (кодировка Shift-JIS).

1
ответ дан 1 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

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