Terminal

終端顯示亂碼,其設置與顯示正確字元的其他終端相同

  • March 11, 2017

我在遠端機器上用 NerdTree 設置了 vim。我有兩臺本地機器。當我從一臺本地機器(比如 A)SSH 到遠端機器時,它會正確顯示 NerdTree 中的所有符號。但是,當我從另一臺本地機器(比如 B)SSH 到遠端機器時,這些符號顯示為一些亂碼。我嘗試對此進行一些搜尋,並嘗試了我能找到的各種語言環境和編碼。以下是兩臺本地機器和遠端機器的設置。

本地機器 A:

$ stty
speed 38400 baud; line = 0;
eol = M-^?; eol2 = M-^?; swtch = M-^?;
ixany iutf8

$ echo $LANG
en_US.UTF-8

$ locale
LANG=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=

本地機器 B:

$ stty
speed 38400 baud; line = 0;
eol = M-^?; eol2 = M-^?; swtch = M-^?;
ixany iutf8

$ echo $LANG
en_US.UTF-8

$ locale
LANG=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=

本地機器上的設置似乎是一樣的。它們都執行 CentOS 風格的作業系統。兩個終端都是 Gnome 終端,設置為使用字元編碼 UTF-8。我能看到的唯一區別是機器 A 使用帶有字型 Courier 的 2.16.0 版本,機器 B 使用帶有等寬字型的 2.31.3 版本。所以機器B實際上使用了更新的版本。

遠端機器:

λ echo $LANG
en_US.UTF-8

λ stty
speed 38400 baud; line = 0;
eol = M-^?; eol2 = M-^?;
-brkint ixany

λ locale
LANG=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=

λ我在遠端機器上的符號$PS1在兩個終端上都正確顯示。

我該如何從這裡開始?本地機器上安裝的字型重要嗎?謝謝

我想通了。這看起來像字型問題。一旦我將字型從機器 A 安裝到機器 B,它就開始正常工作。

要安裝字型,我將所有內容從機器 A 複製/usr/share/fonts到機器 B,然後fc-cache /usr/share/fonts按照此處所述執行

引用自:https://unix.stackexchange.com/questions/350665