2012-09-29 149 views
34

例如,我的终端做到这一点:为什么我的终端不能正确输出unicode字符?

$ 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= 
+0

什么操作系统您使用的?对于OS X尝试:终端 - >首选项 - >高级 - >字符。编码:UTF-8 – by0

+0

除op系统外,还需指定您使用的终端仿真器程序(例如,gnome-terminal,xterm或其他列出的[最佳Linux终端仿真器?](http://superuser.com/ questions/80506)),以及选择什么字符编码(例如Unicode UTF-8)和字体。在我的Ubuntu 12.04 linux系统上使用gnome-terminal和UTF-8以及Monospace Bold,头骨和交叉骨头看起来没问题。 –

+0

我也使用Gnome Terminal ...那么我在哪里更改这些设置?嗯....我想知道运行'locale'的脸是否显示'LANG = C'是问题...嗯。 – trusktr

回答

7

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

+9

即使我的语言环境已经正确,但对我而言并不适用。 –

+3

这些天,每个人都在转向systemd。如果你使用systemd,使用rc.conf将不会执行任何操作。 – trusktr

+0

@trusktr没有rc.conf!只是一个rc.local! –

8

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

+4

如果我可以更改/ etc/*,我现在该怎么做?! –

2

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

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

然后重新启动:

sudo reboot 
相关问题