Terminal
終端顯示亂碼,其設置與顯示正確字元的其他終端相同
我在遠端機器上用 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
按照此處所述執行