我已经在 OSX 上配置了我的终端以正确显示表情符号。当我打开终端时,我可以正确输入并查看表情符号。我的 OSX 区域设置如下所示。当我启动 tmux 会话时,它也工作正常。
然而,当我启动到 Ubuntu 服务器的 ssh 会话时,表情符号显示为一个奇怪的数字。 Ubuntu ssh 会话的区域设置也如下所示。
我想知道这是为什么以及如何解决它。我使用 Droid Sans Mono for Powerline 作为终端中的字体。 OSX 版本是 El Capitan,我服务器上的 Ubuntu 版本是 14.04 LTS。
OSX 语言环境
dino :: locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
Linux 区域设置(通过 ssh 会话)
testarossa :: ~ %locale
LANG=en_US.UTF-8
LANGUAGE=
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=en_US.UTF-8
OSX 本地会话中的表情符号是什么样子
在我的 Ubuntu 机器上的远程会话中,相同的字符串是什么样子的
答案1
的值TERM
无关紧要。重要的是终端仿真器(以及 glibc 的版本)。例如,请参阅我的评论Debian #790847:
Interestingly, the lynx package in Fedora22 works
(passably with vte
-- none of the other terminals display Emoji
-- no need for a list).
虽然(我目前无法验证),Ubuntu 14.04 可能已经足够老了,以至于我稍后指出的问题glibc是相关的:
Further checking in Debian/testing shows me that wcwidth() is returning -1's
for these values (which is incorrect, it should return 1's). Lynx is behaving
correctly for this case -- it has no way to tell that the characters "should"
print as expected.