为什么我的终端没有正确输出unicode字符?

时间:2012-09-29 04:23:44

标签: bash shell command-line console terminal

例如,我的终端执行此操作:

$ echo -e "\xE2\x98\xA0"
���

我希望它能做到这一点:

$ echo -e "\xE2\x98\xA0"
☠

为什么呢?如何让我的终端输出正确的unicode符号?

我在Arch Linux上使用Gnome 3的终端。

locale的输出显示:

LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

3 个答案:

答案 0 :(得分:12)

我明白了。我必须确保在LANGUAGE="en_US.UTF-8"中设置/etc/rc.conf并在LANG="en_US.UTF-8"中设置/etc/locale.conf,然后注销并重新登录并运行。我的终端现在正确显示unicode。

答案 1 :(得分:11)

如果您无法更改/etc/*个文件,可以手动将gnome-terminal菜单Terminal | Set Character Encoding设置为Unicode(Utf-8)

答案 2 :(得分:5)

我使用以下命令更新了我的语言环境:

sudo update-locale LANG=en_US.UTF-8 LANGUAGE=en.UTF-8

然后重新启动:

sudo reboot