Terminal

在所有終端中禁用 utf-8?

  • April 29, 2022

這個問題與我的Ubuntu 18系統有關,如下…

% uname -a
Linux myhost.name.net 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

我不知道在我的正常系統升級過程中發生了多久,但我現在註意到我所有的終端視窗都在寫UTF-8字元。我希望所有終端視窗都使用us.ascii(或可能iso-8859-1)。我找不到設置這個的任何地方。

此外,所有鍵盤輸入似乎都是UTF-8,我也希望它是us.asciior iso-8859-1

預設情況下,該LANG變數en_US.UTF-8在我的終端視窗中執行的所有 shell 中都設置為,但我沒有故意在任何配置文件中設置它。

這發生在xtermrxvt和下,據我所知,urxvt這些程序都沒有配置為使用。UTF-8

我正在跑步XFCE4,如果這有什麼不同的話。我在設置中也找不到任何設置XFCE4

誰能建議一種方法來重置我的系統,以便所有終端視窗始終顯示us.asciior iso-8859-1,並且所有鍵盤輸入也是us.asciior iso-8859-1

非常感謝你。

您沒有找到任何特定設置,因為絕大多數現代 Linux 軟體都決定了語言環境環境變數要使用的字元集。使用該locale命令查看完整的目前語言環境設置。

你檢查過/etc/default/locale嗎?它是用於設置系統預設語言環境的標準 Debian 配置文件。如果你想使用 iso-8859-1 而不是 UTF-8,你應該:

  • 確保該en_US ISO-8859-1行未註釋/etc/locale.gen並在編輯文件後執行sudo locale-gen(如果不是)
  • LANG語言環境變數(或至少LC_CTYPE)指定為en_US.iso88591(或根據 的正確形式locale -a | grep en_US

如果問題是您從 Ubuntu 18 UTF-8 系統連接到使用 ISO-8859-1 而不是 UTF-8 的舊系統,您可能會考慮在傳出連接上插入字元映射層,而不是降級整個處理遺留編碼的系統。製作一個像這樣的小腳本(或 shell 函式):

#!/bin/sh
luit -encoding 'ISO 8859-1' ssh "$@"

(如果要對遠端端點強制執行嚴格的 US-ASCII,請替換ISO 8859-1ASCII。)

隨意命名。ssh使用舊字元編碼連接到系統時,請使用此腳本/函式而不是正常命令。

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