我的windows C程序不打印日文字符


#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终端应该可以工作。旧的控制台可能只显示方块。这是控制台/字体限制。把这些方块复制到剪贴板上,然后粘贴到写字板上,看看你的程序是否正常工作。

参见:

  • 在控制台中打破神话

最新更新