Bash 转义序列“\u";在80英尺之间

Bash 转义序列“\u";在80英尺之间,bash,unicode,utf-8,fonts,console,Bash,Unicode,Utf 8,Fonts,Console,如何在linux控制台中使用转义序列打印unicode介于0x80和0xFF之间的字符? 比如说, [root@...]#setfont/lib/kbd/consolefonts/cp850-8x16.psfu.gz 首先,我将cp850-8x16.psfu.gz设置为具有unicode为0xa9的版权字符 [root@...]#echo-e'\u212b' Å 输出正确,但unicode大于0xFF [root@...]#回声-e'\u00a9' � [root@...]#echo-e'\

如何在linux控制台中使用转义序列打印unicode介于0x80和0xFF之间的字符?
比如说,

[root@...]#setfont/lib/kbd/consolefonts/cp850-8x16.psfu.gz

首先,我将cp850-8x16.psfu.gz设置为具有unicode为0xa9的版权字符

[root@...]#echo-e'\u212b'

输出正确,但unicode大于0xFF

[root@...]#回声-e'\u00a9'

[root@...]#echo-e'\ua9'

输出不正确

[root@...]#echo-e'\xC2\xa9'

如果我将unicode转换为utf-8,它会工作
Rq:0xA9=0b10101001=>(utf-8)0b110000100b10101001=>0xC2 0xA9)

是否有一种解决方案可以直接将a9与\u一起使用(即不进行二进制运算以获得utf-8代码并使用\x)?

它适用于bash版本4.4.18,但不适用于我以前的版本(4.2.46)。
经过一些检查后,它可以与bash版本4.3.0一起使用,但不能在4.2.53中使用。

始终使用
printf
<代码>printf'\u00a9'@inian。首先,请仔细阅读我的问题并删除您的副本。它涉及80和FF之间的unicode。我知道如何打印unicode(请参阅我问题中的echo-e'\u212b')。其次,printf不起作用。(我的bash版本是4.2.46)@inian。仅供参考:printf(“\u00a9”)在C语言中工作。在man 1 printf中,它是一种书面格式,与C printf中一样控制输出。事实并非如此,\u@投了反对票的人,请添加评论来解释。您只有一张反对票!这可能是因为他们认为您的问题与堆栈溢出无关,因为它与编程无关(只是猜测)。对我来说,这似乎更适合回答您的问题。有关详细信息,请参阅(bash src中的cf ChangeLog文件)。lib/sh/strtrans.c-ansicstr:使用0x7f作为直接从ASCII转换为unicode(\u和\u转义)的字符的边界,而不是UCHAR\u MAX,因为所有>=0x80的字符都需要多个字节。来自John Kearney builtins/printf.def-tescape的Bug和修复程序:printf\u和\u转义序列同上