我在尝试让我的终端显示 unicode 字符时遇到了困难。我已将 LOCALE/LANG 环境变量设置为 en_US.utf8:
locale
LANG=en_US.utf8
LC_CTYPE=en_US.utf8
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
echo -e '\xe2\x82\xac'
���
我发现的所有内容都说要设置 LANG 和 LOCALE 变量,我已经这样做了,但问题仍然存在。locale -a
显示正确的区域设置可用:
Laptop:~:0:2030$ locale -a | grep utf
de_AT.utf8
de_BE.utf8
de_CH.utf8
de_DE.utf8
de_LI.utf8
de_LU.utf8
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN.utf8
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM.utf8
en_ZW.utf8
es_AR.utf8
es_BO.utf8
es_CL.utf8
es_CO.utf8
es_CR.utf8
es_DO.utf8
es_EC.utf8
es_ES.utf8
es_GT.utf8
es_HN.utf8
es_MX.utf8
es_NI.utf8
es_PA.utf8
es_PE.utf8
es_PR.utf8
es_PY.utf8
es_SV.utf8
es_US.utf8
es_UY.utf8
es_VE.utf8
fr_BE.utf8
fr_CA.utf8
fr_CH.utf8
fr_FR.utf8
fr_LU.utf8
ga_IE.utf8
nl_AW.utf8
nl_BE.utf8
nl_NL.utf8
pl_PL.utf8
我还验证了这不仅限于 CLI。例如,u+2713
在 VIM(这是我经常使用的东西)中执行操作,也会给出<?>
字符输出。
在 gnome-terminal 选项中,我将其设置为使用默认系统字体,但在没有帮助的情况下尝试了列表中的所有字体,并且谷歌搜索“terminal unicode font”只是继续告诉我设置 LOCALE 的循环/郎。
--
编辑:按照下面的建议,我将 locale/lang 更改为 en_US.UTF-8,但这没有解决问题:
Laptop:~:0:2013$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Laptop:~:0:2014$ echo -e '\xe2\x82\xac'
���
答案1
解决方案要简单得多。我必须进入 gnome-terminal 的 GUI 设置,访问 Terminal -> Set Character Encoding -> UTF-8。
-- 将其保留为默认值乌班图(很遗憾地发现这是这个 SE 论坛中特定于发行版的解决方案):
gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding en_US.UTF-8
答案2
我也遇到了同样的问题终端 -> 设置字符编码 -> Unicode (UTF-8)正确设置。通过将编码设置为其他内容然后再设置回 UTF-8 解决了该问题。可见字符没有立即改变,但新键入的字符开始正确显示。无需重新启动任何东西。