gpt4 book ai didi

c - 如何在 C(Linux utf8 终端)中打印 "box drawers"Unicode 字符?

转载 作者:太空狗 更新时间:2023-10-29 15:29:54 29 4
gpt4 key购买 nike

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

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

谁能回答这些问题:

  • 如何在 C 变量中编码 unicode 字符(style wchar_t)?
  • Unicode 如何使用 0x 或 0o(十六进制、八进制)等转义序列?

我知道 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);

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

提前感谢您的帮助...

[最近编辑]问题已解决,因为...我发现了如何将 wprintf() 与 %lc 而不是 %c 一起使用...以及更深入。现在那些弓形抽屉是我的学生“工具”库的一部分,使控制台编程学习更加丰富多彩。

最佳答案

使用包含这些字符的 utf-8 版本的字节的 Cstring。如果您打印该 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;
}

为我打印─━

此外,如果您要打印其中某处包含 uft-8 字符字节的 Cstring,它会毫无问题地打印这些字符。/* 假设你使用 gcc */无论如何,IIRC gcc 在内部使用 utf-8。

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

关于c - 如何在 C(Linux utf8 终端)中打印 "box drawers"Unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430899/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com