linux c打印字符图片,如何在C(Linux utf8终端)中打印“抽屉式” Unicode字符?

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

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

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

>如何在C变量(样式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的代码…实际上,它们不是没错

感谢您的提前帮助…

解决方法:

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

您的两个字符的示例:

#include

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.

编辑:当我写这篇文章时,你的问题改变了一点.我的回答现在不那么重要了.

但是从您的症状来看-如果您看到一个?对于您期望的每个字符,我想说您的终端字体可能缺少这些字符所需的字形.

标签:unicode,c-3,linux

来源: https://codeday.me/bug/20191031/1975222.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值