当我在Bash(4.3.11)中使用unicode 6.0字符(例如'啤酒杯')时,它无法正确显示。
只需复制和粘贴字符即可,但如果使用utf-16十六进制代码,如
$ echo -e '\ud83c\udf7a'
,
输出是' ??????'。
问题是什么?
答案 0 :(得分:2)
您不能将UTF-16与bash和unix(类似)终端一起使用。 Bash字符串是字节串,终端将(如果你已正确配置)预期UTF-8序列。在UTF-8中,代理对是非法的。因此,如果您想展示您的啤酒杯,您需要提供UTF-8序列。
请注意echo -e
解释\uXXXX
和\UXXXXXXXX
形式的unicode转义,生成相应的UTF-8序列。所以你可以用你的啤酒杯(假设你的终端字体包括它):
echo -e '\U0001f37a'