2014-10-22 3 views
0

Я пытаюсь напечатать символ Unicode в окне консоли с помощью C++ вот мой кодпечати Юникода в консоли окна

_setmode(_fileno(stdout), _O_U16TEXT); 
std::wcout << L"\u2B24"; 

Странная вещь, этот код дает правильный вывод для некоторого юникоды и нет (печать знак вопроса вместо символа) для некоторых. Я не могу понять, почему. в качестве примера работы для this (\ u061F) и не работает для this (\ u2B24)

Любая идея, что я пропускаю?

Edit:

Код: std::wcout << L"Test-"<<L"\u061F"<< L"-Test" << std::endl;

Выход: Test-?-Test

+0

определить «работы». в частности, проводить различие между отображением и хранением. вы можете скопировать этот символ, затем он будет правильно сохранен. –

+0

@ Cheers и hth. - Альф: Извините, я не понял, что вы имеете в виду? –

+0

добавить обычный текст до и после \ u2B24. вывести его на консоль. скопировать и вставить с консоли на, например, Windows «пишет». или Word. Я проверил, что «запись» может отображать этот символ в Windows 8.1, но вы можете проверить его, набрав 2B24 и нажав Alt X. обратите внимание, что это в группе, например. браузер Chrome плохо справляется. –

ответ

0

Это может зависеть от шрифта, который настроен для использования в окне консоли. Если используемый шрифт не имеет записи Юникода, на которую вы ссылаетесь, он не отображает его. Вы можете проверить, какой шрифт вы используете в Свойствах окна команд. Затем откройте этот шрифт в приложении «Карта символов», которое предоставляет MS, и вы можете проверить, какие коды доступны.

В качестве альтернативы можно использовать add fonts to the Console window. Однако вы, вероятно, должны помнить, что у кого-то другого, работающего на вашем программном обеспечении, может быть не такой же шрифт, как у вас.

Смежные вопросы