Я все еще изучаю C++, поэтому терпите меня и мой неаккуратный код. Компилятором, который я использую, является C++ Dev. Я хочу смочь произвести символы Unicode в Консольный суд использования. Whenver я пробую вещи как:
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
std::cout << "Blah blah blah some gibberish unicode: ĐĄßĞĝ\n";
system("PAUSE");
return 0;
}
Это производит странные символы к консоли, как µA■Gg. Почему это делает это, и как я могу добраться до отобразить ĐĄßĞĝ? Или разве это не возможно с Windows?
А как насчет std :: wcout
?
#include <iostream>
int main() {
std::wcout << L"Hello World!" << std::endl;
return 0;
}
Это стандартный выходной поток для расширенных символов.
Тем не менее, как указал Адриан, это не касается того факта, что cmd
по умолчанию не обрабатывает выходные данные Unicode. Это можно решить, настроив консоль вручную, как описано в ответе Адриана:
cmd
с аргументом / u
; chcp 65001
], чтобы изменить формат вывода, Вы также можете попробовать использовать _setmode (_fileno (stdout), _O_U16TEXT);
, который требует fcntl.h
и io.h
(как описано в этот ответ и задокументировано в этом сообщении в блоге ).
Вы использовали выходной поток ANSI. Вам нужно использовать std :: wcout << L "Бла-бла-бла какой-то бред unicode: ĐĄßĞĝ \ n";
Также используйте std :: cin.get (), а не system ("PAUSE")
Я не уверен, что Windows XP полностью поддерживает то, что вам нужно. Чтобы включить Unicode с помощью командной консоли, необходимо сделать три вещи:
cmd / u
. / u
говорит, что ваши программы будут выводить Unicode. chcp 65001
, чтобы указать, что вы хотите использовать UTF-8 вместо одной из кодовых страниц. Lucida Console Unicode
. В моем приставке XP есть подмножество под названием Lucida Console
. У него не очень обширный репертуар, но его должно быть достаточно, если вы просто пытаетесь отобразить некоторые символы с диакритическими знаками.