2012-01-05 5 views
4

У меня есть массив wchar_t с символами на английском и иврите, и когда я печатаю его с помощью wprintf(), он печатает только консольные английские символы. Когда я использую _wsetlocale (LC_ALL, L "Hebrew"), я получаю символы на иврите как "????". Машина, на которой я работаю, поддерживает иврит, конечно.wprintf с символами UNICODE (иврит)

BTW - используя c: \ windows \ system32 \ cmd.exe и 'dir' в каталоге с ивритскими символами, также показывает "???" вместо иврита.

Есть идеи?

+0

Возможный дубликат [C++: вывод содержимого файла Unicode на консоль в Windows] (http://stackoverflow.com/questions/4909187/c-output-contents-of-a-unicode-file-to-console -в-окно) –

ответ

2

Вы подтвердили, что ваш консольный шрифт может обрабатывать символы Unicode? Большинство нет. Вы можете попробовать шрифт Consolas.

Когда я столкнулся с этим прежде, я нашел статью this Майкла Каплана, чтобы быть чрезвычайно полезной.

2

В основном библиотека времени выполнения Microsoft C не очень хорошо реализована для этого.

Вы можете сделать _setmode(_fileno(stdout), _O_U16TEXT);, а затем писать с помощью wcout или wprintf будет работать. Однако попытка использовать cout или printf или что-либо, что не пишет UTF-16, приведет к сбою программы.