wprintf с символами UNICODE (иврит)

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

Кстати, при использовании c:\windows\system32\cmd.exe и «dir» в каталоге с символами иврита также отображается «???» вместо иврита.

Есть идеи?


person Elad    schedule 05.01.2012    source источник
comment
возможный дубликат C++: вывод содержимого Unicode файл для консоли в Windows   -  person Adrian McCarthy    schedule 05.01.2012


Ответы (2)


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

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

person ReinstateMonica Larry Osterman    schedule 05.01.2012

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

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

person bames53    schedule 06.01.2012