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

tru*_*ktr 46 bash shell terminal console command-line

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

$ echo -e "\xE2\x98\xA0"
???
Run Code Online (Sandbox Code Playgroud)

我希望它能做到这一点:

$ echo -e "\xE2\x98\xA0"
?
Run Code Online (Sandbox Code Playgroud)

为什么?如何使终端输出正确的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=
Run Code Online (Sandbox Code Playgroud)

tru*_*ktr 14

我想到了.我必须确保我LANGUAGE="en_US.UTF-8"进入/etc/rc.confLANG="en_US.UTF-8"进入/etc/locale.conf,然后退出并重新登录并且它有效.我的终端现在正确显示unicode.

  • 虽然我的语言环境已经正确,但对我不起作用. (13认同)
  • 这些天,每个人都在转向systemd.如果您使用的是systemd,则使用rc.conf将不会执行任何操作. (4认同)

Nim*_*lar 11

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

  • 如果我可以更改/ etc/*,我现在该怎么办?! (4认同)

Ben*_*Ben 6

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

sudo update-locale LANG=en_US.UTF-8 LANGUAGE=en.UTF-8
Run Code Online (Sandbox Code Playgroud)

然后重启:

sudo reboot
Run Code Online (Sandbox Code Playgroud)