【问题标题】:wprintf with UNICODE (Hebrew) characters带有 UNICODE(希伯来语)字符的 wprintf
【发布时间】:2012-02-03 09:39:20
【问题描述】:
我有一个包含英语和希伯来语字符的 wchar_t 数组,当我使用 wprintf() 打印它时,它只打印以控制英语字符。当我使用 _wsetlocale( LC_ALL, L"Hebrew" ) 时,我得到的希伯来字符是“????”。
我正在开发的机器当然支持希伯来语。
顺便说一句 - 在带有希伯来字符的目录上使用 c:\windows\system32\cmd.exe 和 'dir',也会显示“???”而不是希伯来语。
有什么想法吗?
【问题讨论】:
标签:
c
windows
unicode
console
hebrew
【解决方案1】:
您是否确认您的控制台字体可以处理 Unicode 字符?大多数没有。你可以试试 Consolas 字体。
当我之前遇到这个问题时,我发现 Michael Kaplan 的 this 文章非常有帮助。
【解决方案2】:
基本上,Microsoft 的 C 运行时库没有很好地实现,无法实现这一点。
您可以使用_setmode(_fileno(stdout), _O_U16TEXT);,然后使用 wcout 或 wprintf 进行编写。但是尝试使用 cout 或 printf 或任何不写 UTF-16 的东西都会导致程序崩溃。