【发布时间】:2015-06-28 21:18:58
【问题描述】:
示例代码:
int main(int argc, char *argv[]){
int x = sizeof(wchar_t);
printf("%i\n",x);
wchar_t t = 0x011E;
printf("%c\n\n",t);
wchar_t a = 0x0041;
printf("%c\n\n",a);
}
将打印:
4
A
0x011E 是字符 ğ 的 UTF-16 code。为什么不打印?
【问题讨论】:
-
我相信您需要
%lc才能获得wchar。您可能还需要使用wprintf。 -
首先:转换规范
"%c"需要char类型的值,而不是wchar_t类型的值。您通过将错误类型的值传递给printf()来调用未定义行为。您还需要#include <stdio.h>以获取printf()的正确原型 -
它可能取决于您的环境(特别是操作系统、编译器等)。通常,终端(例如在大多数 Linux 上)是 UTF-8 编码的。
-
@JonSkeet wprintf("%lc\n\n",t);没有为我解决。
-
@pmg 我有包含语句,我没有在这里显示。