这很有趣。显然,编译器将omega从UTF-8转换为UNICODE,但libc某种程度上将其弄乱了。
首先:
%c-format说明符期望一个
char(即使在wprintf
-version 中也是如此),因此您必须指定
%lc(并因此指定
%ls字符串)。
其次,如果您像这样将语言环境设置为运行代码
C(它不会自动从环境中获取)。您必须
setlocale使用空字符串进行调用以从环境中获取语言环境,因此libc再次感到高兴。
#include <stdio.h>#include <wchar.h>#include <stdlib.h>#include <locale.h>int main() { int r; wchar_t myChar1 = L'Ω'; setlocale(LC_CTYPE, ""); r = wprintf(L"char is %lc (%x)n", myChar1, myChar1);}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)