C Printf和日语宽字符返回-1而不是打印它?

C Printf和日语宽字符返回-1而不是打印它?,c,encoding,printf,C,Encoding,Printf,为什么 printf(“%s”)米");输出米并返回3,但是 printf(“%ls”,L”米”;不打印任何内容并返回-1 我在这里感到困惑。您使用的是哪种编译器?我键入了“gcc”,但由于我运行OSX 10.9,我认为它现在默认是叮当响的,正如这个线程所建议的:,以便使用宽字符符号(L”“以及%ls)必须正确设置区域设置。好的,我现在感觉很笨。谢谢你,先生!首先:如果文本在源代码中存储为UTF8,那么printf所做的就是将文本3个字节发送到控制台。然后控制台再次解释UTF8序列,并显示正确的

为什么

printf(“%s”)米");输出<代码>米
并返回
3
,但是

printf(“%ls”,L”米”;
不打印任何内容并返回
-1


我在这里感到困惑。

您使用的是哪种编译器?我键入了“gcc”,但由于我运行OSX 10.9,我认为它现在默认是叮当响的,正如这个线程所建议的:,以便使用宽字符符号(
L”“
以及
%ls
)必须正确设置区域设置。好的,我现在感觉很笨。谢谢你,先生!首先:如果文本在源代码中存储为UTF8,那么
printf
所做的就是将文本3个字节发送到控制台。然后控制台再次解释UTF8序列,并显示正确的字符。