#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main() {
setlocale(LC_ALL, "");
wchar_t test = L'づ';
printf("%ls", L"x3065");
printf("%lc", test);
return 0;
}
期望的输出是:,但是这两个printf没有打印任何东西,我该怎么做才能解决这个问题?
printf
是一个窄字符串函数,除非您在清单中请求UTF-8并且在适当的Windows 10版本上运行,否则它不会在所有情况下正确打印Unicode。
使用wprintf
打印宽字符串。根据C运行库的不同,您可能需要在打印之前先调用_setmode(_fileno(stdout), _O_U16TEXT);
。
即使你的程序做了所有正确的事情,它仍然可能无法在控制台中工作。使用新的Windows终端应该可以工作。旧的控制台可能只显示方块。这是控制台/字体限制。把这些方块复制到剪贴板上,然后粘贴到写字板上,看看你的程序是否正常工作。
参见:
- 在控制台中打破神话