我有一个带有英文和希伯来字符的wchar_t数组,当我用wprintf()打印它时,它只打印控制英文字符。当我使用_wsetlocale(LC_ALL,L“Hebrew”)时,我将希伯来字符称为“????”。 我正在研究的机器当然支持希伯来语。
BTW - 在希伯来字符的目录上使用c:\ windows \ system32 \ cmd.exe和'dir',也显示“???”而不是希伯来语。
有什么想法吗?
答案 0 :(得分:2)
您确认您的控制台字体可以处理unicode字符吗?大多数人没有。您可以尝试使用Consolas字体。
当我遇到这个问题之前,我发现迈克尔卡普兰的this文章非常有帮助。
答案 1 :(得分:2)
基本上,Microsoft的C运行时库实现得不是很好。
您可以执行_setmode(_fileno(stdout), _O_U16TEXT);
然后使用wcout或wprintf编写即可。但是,尝试使用cout或printf,或者任何不写UTF-16的东西都会导致程序崩溃。