如何在C(Linux utf8终端)中打印“盒子抽屉” Unicode字符?

Hur*_*per 4 c linux unicode

我正在尝试显示(Box绘图范围:2500–257F)中的Unicode字符。它应该是标准的utf8(Unicode标准,版本6.2)。我根本做不到。

我首先尝试使用旧的ASCII字符,但是Linux终端显示在utf8中,并且没有显示任何转换(符号?)。

任何人都可以回答以下问题:

  • 如何在C变量(style wchar_t)中编码Unicode字符?
  • 如何将转义序列(例如0x或0o(十六进制,十进制))用于Unicode?

我知道U +,但似乎没有用。

setlocale(LC_ALL,"");
short a = 0x2500, b = 0x2501;
wchar_t ac = a;
wchar_t bc = b;
wprintf(L"%c%c\n", ac, bc);
exit(0);
Run Code Online (Sandbox Code Playgroud)

我知道结果与所使用的字体有关,但是我使用utf8字体(http://www.unicode.org/charts/fonts.html),并且必须显示从2500到257F的代码...实际上,它们不是没错

感谢您的提前帮助...

lib*_*o.1 5

使用包含这些字符的utf-8版本字节的Cstring。如果您打印该字符串,它将打印该字符。

您的两个字符的示例:

#include <stdio.h>

int main (int argc, char *argv[])
{
    char block1[] = { 0xe2, 0x94, 0x80, '\0' };
    char block2[] = { 0xe2, 0x94, 0x81, '\0' };
    printf("%s%s\n", block1, block2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

??为我打印。

另外,如果您在其中某处打印包含uft-8个字符字节的Cstring,它将打印这些字符而不会出现问题。/ *假设您使用gcc * /而且IIRC gcc无论如何都在内部使用utf-8。

编辑:当我写这篇文章时,你的问题改变了一点。我的回答现在不那么重要了。但是从您的症状来看-如果您看到一个?对于您期望的每个字符,我想说您的终端字体可能缺少这些字符所需的字形。