在C程序中打印日语字符

Кар*_*ова 3 c unicode setlocale

我想使用 C 程序打印日语字符。我找到了一些日语字符的 Unicode 范围,将它们转换为十进制并使用 for 循环来打印它们:

setlocale(LC_ALL, "ja_JP.UTF8");
for (int i = 12784; i <= 12799; i++) {
  printf("%c\n",i);
}
Run Code Online (Sandbox Code Playgroud)

locale.h 和 wchar.h 存在于标头中。

输出只给我 ????????? 人物。

请让我知道如何解决。

Dav*_*eri 5

%c只能打印 0 到 127 之间的字符,对于扩展字符使用:

printf("%lc\n", i);
Run Code Online (Sandbox Code Playgroud)

或者更好

wprintf(L"%lc\n", i);
Run Code Online (Sandbox Code Playgroud)

  • 这里有很好的解释:https://www.gnu.org/software/libc/manual/html_node/Setting-the-Locale.html (2认同)