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

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

この問題は、次のように私の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.asciiiso-8859-1

デフォルトでは、このLANG変数はターミナルウィンドウで実行されているすべてのシェルでに設定されますが、en_US.UTF-8設定ファイルでは意図的に設定されません。

私が知る限り、この問題は、およびxtermrxvt発生し、urxvtそのプログラムのいずれも悪用するように構成されていません。UTF-8

私は走っていますXFCE4。それがどんな変化をもたらしたら。XFCE4設定でもこれの設定が見つかりません。

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

とても感謝しています。

答え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以前の文字エンコードを使用してシステムに接続するときは、通常のコマンドの代わりにこのスクリプト/関数を使用してください。

関連情報