例如,我的终端是这样做的:
$ 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=
我想通了。我必须确保在
LANGUAGE="en_US.UTF-8"
中设置 /etc/rc.conf
,在 LANG="en_US.UTF-8"
中设置 /etc/locale.conf
,然后注销并重新登录,然后就可以了。我的终端现在可以正确显示 unicode。
我使用以下命令更新了我的区域设置:
sudo update-locale LANG=en_US.UTF-8 LANGUAGE=en.UTF-8
然后重新启动:
sudo reboot
如果您无法更改
/etc/*
文件,您可以手动将gnome-terminal
菜单Terminal
|Set Character Encoding
设置为Unicode(Utf-8)
我在切换到新电脑后试图解决这个问题。我正在使用
Windows Terminal
,并将 Ubuntu
滴入 WSL2
上的 Win 10
。
我尝试了此处提供的建议并重新启动;没有变化。
解决方案
对我来说,修复方法是安装修补的书呆子字体,并将该字体设置为 Windows 终端设置中每个配置文件的默认字体。
localectl
可能是通过我的
.bash_profile
中的错误行,唯一有帮助的是:
localectl set-locale en_US.UTF-8
.bash_profile
中可能有问题的一行是:
# ⚠️ Better not do this
export LANG="en_US.utf8"
注意“.utf8”和“.UTF-8”之间的区别。
在运行
localectl set-locale en_US.UTF-8
之前,localectl status
的输出是:
System Locale: LANG=C
VC Keymap: (unset)
X11 Layout: (unset)
运行后:
System Locale: LANG=en_US.UTF-8
VC Keymap: (unset)
X11 Layout: (unset)
这解决了在 Linux 虚拟控制台中运行 fzf 的问题,我现在可以在 Arch Linux 上的虚拟控制台中显示变音符号和其他非 ASCII 字符。
相关问题: