【发布时间】:2019-07-26 21:56:48
【问题描述】:
如何通过在 linux 控制台中使用 \u 转义序列来打印具有 0x80 和 0xFF 之间 unicode 的字符?
例如,
[root@...]# setfont /lib/kbd/consolefonts/cp850-8x16.psfu.gz
首先,我将 cp850-8x16.psfu.gz 设置为具有 unicode 为 0xa9 的版权字符。
[root@...]# echo -e '\u212b'
Å
输出正确但unicode大于0xFF
[root@...]# echo -e '\u00a9'
�
[root@...]# echo -e '\ua9'
�
输出不对
[root@...]# echo -e '\xC2\xa9'
©
如果我将 unicode 转换为 utf-8,它可以工作
Rq : 0xA9=0b10101001 =>(utf-8) 0b11000010 0b10101001 => 0xC2 0xA9)
有没有直接使用a9和\u的解决方案(即不做二进制运算来获得utf-8代码并使用\x)?
【问题讨论】:
-
始终使用
printf!printf '\u00a9' -
@inian。首先,请仔细阅读我的问题并删除您的重复项。它涉及 80 和 FF 之间的 unicode。我知道如何打印 unicode(参见我的问题中的 echo -e '\u212b' )。其次, printf 不起作用。 (Rq : 我的 bash 版本是 4.2.46)
-
@inian。有关信息: printf("\u00a9") 在 C 中工作。在 man 1 printf 中,它被写成 FORMAT 控制输出,就像在 C printf 中一样。 \u 的情况并非如此。
-
@投反对票的人,请添加评论解释。
-
你只有一张反对票!这可能是因为他们认为您的问题与 Stack Overflow 无关,因为它与编程无关(只是猜测)。 Superuser 似乎更适合您向我提出问题。
标签: bash unicode utf-8 fonts console