web-dev-qa-db-ja.com

すべての端末でutf-8を無効にしますか?

この質問は、次のように私の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に設定されていますが、構成ファイル内でそのように設定しているわけではありません。

これはxtermrxvt、およびurxvtで発生し、これらのプログラムはいずれも、私が知っているUTF-8を利用するように構成されていません。

違いがあれば、私はXFCE4を実行しています。 XFCE4設定にもこの設定が見つかりません。

すべてのターミナルウィンドウに常にus.asciiまたはiso-8859-1が表示され、すべてのキーボード入力もus.asciiまたはiso-8859-1になるように、システムをリセットする方法を提案できますか?

どうもありがとうございました。

2
HippoMan

最新の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-1ASCIIに置き換えます。)

好きな名前を付けてください。レガシー文字エンコードを使用してシステムに接続する場合は、通常のsshコマンドの代わりにこのスクリプト/関数を使用してください。

1
telcoM