【发布时间】:2018-10-08 14:04:09
【问题描述】:
我正在尝试调用 printf() 以使用 %s 输出 Unicode 字符/字符串,但它不打印任何内容。
如果我这样称呼printf():
printf("\xE2\x98\xA0")
我收到了☠。
但是,如果我像这样使用%ls:
printf("%ls", "☠") /* or */
printf("%ls", L"☠") /* or */
printf("%ls", L"\xE2\x98\xA0")
我什么也没打印出来;
另外,我如何声明一个包含 Unicode 字符的 wchar_t 字符串? wchar_t wstro[50] = L"☠" 不起作用。
我需要malloc() 一个wchar_t 然后把Unicode 数据放进去吗?
【问题讨论】:
-
代码示例使用小写
s。建议编辑您的文本/标题以反映s而不是S- 如果这确实是您正在做的事情。 C 中的案例很重要。 -
printf("<%s>\n", u8"\xE2\x98\xA0");(这需要 C11 编译器)或printf("<%s>\n", "\xE2\x98\xA0");printf 为你做什么? -
你需要在 printf 的末尾添加一个
\n -
您使用的是什么操作系统?源文件保存为什么编码?这些细节在处理控制台 I/O 时很重要。