wprintf с символами UNICODE (иврит) - PullRequest
5 голосов
/ 05 января 2012

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

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

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

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

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

2 голосов
/ 05 января 2012

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

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

...