4

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

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

谁能回答这些问题:

  • 如何在 C 变量(style wchar_t)中编码 unicode 字符?
  • 如何为 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...... 并且更深入。现在,那些弓形抽屉是我学生“工具”库的一部分,可以让控制台编程学习更加丰富多彩。

4

2 回答 2

5
于 2013-01-21T00:35:27.100 回答
0

这取决于你所说的“终端”。

linux 控制台使用各种 hack 来显示 unicode,但实际上它的字体仅限于 512 个符号 IIRC,因此它不能真正显示整个 unicode 范围,它可以显示的内容取决于加载的字体(这可能会在未来发生变化)。

用于访问 Linux 的 Windows 终端通常以一种或另一种 unicode 方式受到脑损伤。

物理终端通常更差,并且只能在 ascii-land 中运行

Linux GUI 终端(例如 gnome-terminal)几乎可以显示所有内容,只要您有相应的字体。

您确定不想使用 ncurses 而不是编写自己的终端小部件吗?

于 2014-03-18T19:56:57.457 回答