この質問は、次のように私のUbuntu18システムに関係しています...
% 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.ascii
またはiso-8859-1
にしたいです。
デフォルトでは、ターミナルウィンドウで実行されるすべてのシェルでLANG
変数がen_US.UTF-8
に設定されていますが、構成ファイル内でそのように設定しているわけではありません。
これはxterm
、rxvt
、およびurxvt
で発生し、これらのプログラムはいずれも、私が知っているUTF-8
を利用するように構成されていません。
違いがあれば、私はXFCE4
を実行しています。 XFCE4
設定にもこの設定が見つかりません。
すべてのターミナルウィンドウに常にus.ascii
またはiso-8859-1
が表示され、すべてのキーボード入力もus.ascii
またはiso-8859-1
になるように、システムをリセットする方法を提案できますか?
どうもありがとうございました。
最新のLinuxソフトウェアの圧倒的多数が、ロケール環境変数で使用する文字セットを決定しているため、特定の設定は見つかりません。 locale
コマンドを使用して、現在のロケール設定の完全なセットを表示します。
/etc/default/locale
をチェックしましたか?これは、システムのデフォルトロケールを設定するための標準のDebian設定ファイルです。 UTF-8の代わりにiso-8859-1を使用する場合は、次のことを行う必要があります。
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システムからUTF-8の代わりにISO-8859-1を使用するレガシーシステムに接続していることが問題である場合は、全体をダウングレードするのではなく、発信接続に文字マッピングレイヤーを挿入することを検討してください。レガシーエンコーディングを処理するシステム。次のような小さなスクリプト(またはシェル関数)を作成します。
#!/bin/sh
luit -encoding 'ISO 8859-1' ssh "$@"
(リモートエンドポイントに厳密なUS-ASCIIを適用する場合は、ISO 8859-1
をASCII
に置き換えます。)
好きな名前を付けてください。レガシー文字エンコードを使用してシステムに接続する場合は、通常のssh
コマンドの代わりにこのスクリプト/関数を使用してください。