您如何在Linux终端中显示区域状态指示器(例如国旗)?这是否可能?我正在编写一个VPN客户端,并希望包括一些国家的标志。例如,我想显示日本国旗()。我将两个Unicode符号
和
并排粘贴到Bash脚本中,但在终端中运行脚本后,我只得到了两个并排的符号(它们没有“合并”)。为了举例说明,下面是文件的一部分(请注意,符号之间有一个空格,以防止它们在浏览器中“合并”,实际脚本中没有空格)。#!/bin/bash
echo "Please choose a server:"
echo -e " Japan (1)" # in the real script there is no space here.
echo -e "..."
read -p "> " choice
...
运行后:
$ ./script.sh
Please choose a server:
Japan (1) [ with no space in between ]
...
我理解区域状态指示符的概念,但我的问题是是否可以在终端中使用它们。
echo -e '\U1f1ef\U1f1f5' | hexdump -C
的输出。假设您正在使用UTF-8语言环境,则输出应指示bash
为这两个Unicode字符生成了字节f0
,9f
,87
,af
,f0
,9f
,87
和b5
。您的终端还必须设置为使用UTF-8,以便它知道如何将这8个字节重新组合成所需的Unicode字符。最后,您的终端还必须配置为使用可以提供正确国旗图标的字体,以供终端呈现引擎用于显示该对字符。 - chepnerhexdump
的输出,一切正常(不过末尾有一个0a
...),我还确认终端正在使用UTF-8字符编码。经过一些研究,似乎Monospace [Regular](我使用的字体)支持各种字形,但不支持旗帜字形?我不确定,虽然我想我会遇到这个问题。我的问题是要找到一个解决方法。 - Anonymous