为什么在GCC终端中无法正确显示Unicode字符?

时间:2015-06-14 14:50:09

标签: c gcc unicode

我写了一个小C程序:

为什么不打印字符TestThread1

相反,它会打印出胡言乱语。 unicodetest

我已经查过:

  • 尝试编译时没有setlocale,结果相同
  • 终端本身可以打印字符,我可以从文本编辑器复制粘贴到终端,它是Ubuntu上的gnome-terminal
  • GCC版本为4.8.2

1 个答案:

答案 0 :(得分:5)

wprintfprintf的一个版本,它将一个宽字符串作为其格式字符串,但行为相同:%c仍被视为char,而不是wchar_t。因此,您需要使用%lc来格式化宽字符。由于你的字符串是ASCII,你也可以使用printf。例如:

int main() {
    printf("%s\n", setlocale(LC_ALL, "C.UTF-8"));
    wchar_t chr = L'┐';
    printf("%lc\n", chr);
}