【问题标题】:Why can't I print a unicode character in c with wchar_t? [duplicate]为什么我不能用 wchar_t 在 c 中打印一个 unicode 字符? [复制]
【发布时间】: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 我有包含语句,我没有在这里显示。

标签: c unicode wchar-t


【解决方案1】:

当您打印一个字符时,您实际上只是将其代码发送到控制台。控制台渲染器使用自己的字符表解释此代码。所以你必须在源代码和控制台中使用相同的编码。

如果你运行的是 windows,请参阅here 如何在 cmd.exe 中更改编码。

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 2020-07-05
    • 2012-09-11
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多