Bash是否支持Unicode 6.0?

时间:2014-05-25 15:25:32

标签: bash unicode

当我在Bash(4.3.11)中使用unicode 6.0字符(例如'啤酒杯')时,它无法正确显示。

只需复制和粘贴字符即可,但如果使用utf-16十六进制代码,如

$ echo -e '\ud83c\udf7a'

输出是' ??????'。

问题是什么?

1 个答案:

答案 0 :(得分:2)

您不能将UTF-16与bash和unix(类似)终端一起使用。 Bash字符串是字节串,终端将(如果你已正确配置)预期UTF-8序列。在UTF-8中,代理对是非法的。因此,如果您想展示您的啤酒杯,您需要提供UTF-8序列。

请注意echo -e解释\uXXXX\UXXXXXXXX形式的unicode转义,生成相应的UTF-8序列。所以你可以用你的啤酒杯(假设你的终端字体包括它):

echo -e '\U0001f37a'