サーバーが非常に遅く応答する問題が発生し、SSHを介して強制的に再起動しました。再接続すると、システムはもはや特定の文字を正しく出力しないことがわかりました。
例:私はtree
このコマンドを頻繁に使用してディレクトリの構造とその内容をすばやくチェックし、他のシステムでこのコマンドを使用すると次のような出力が得られます。
root@hostname:/tmp# tree
.
└── test
├── bar
│ ├── bar
│ ├── baz
│ └── foo
└── foo
2 directories, 4 files
ただし、今私のシステムでこれを行うと、次の結果が表示されます。
root@hostname:/tmp# tree
.
ΓööΓöÇΓöÇ test
Γö£ΓöÇΓöÇ bar
│   ├── bar
│   ├── baz
│   └── foo
ΓööΓöÇΓöÇ foo
2 directories, 4 files
どのようにこれが起こったのかを知る方法はありますか?どのように復元できますか?
編集する
出力LC_ALL=C tree
は次のとおりです。
root@hostname:/tmp# LC_ALL=C tree
.
`-- test
|-- bar
| |-- bar
| |-- baz
| `-- foo
`-- foo
2 directories, 4 files
出力locale
は次のとおりです。
root@hostname:/tmp# locale
LANG=en_GB.utf8
LANGUAGE=
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=en_GB.utf8
答え1
質問の情報は概略的です。ただし、サンプル出力には、エンコードツリーに予想以上の文字があるというエラーが表示されます。tree
UTF-8が送信できる環境で実行されている可能性があります。使用されるグラフィック文字の場合、各特殊文字は3バイトを占めます。一方では(ローカルでもリモートでも構いません)、OPは次のようなものを使用しています。録音これをUTF-8に変換してバイト数を増やします(出力の各バイトtree
範囲は128-255なので)。
たとえば、OPが実行されている場合xterm(使用ルイット)、そして(実際に)luitに実際のエンコーディングがと言って混乱を与えるために、en_GB
128-255値のそれぞれを2-3バイトに変換します(「UTF-8に「返す」)。
さて、強く打つ質問と関係がないので木(ユニークなユーティリティ)テキストを作成するためのものです。
答え2
LC_ALL=en_US.UTF-8 を使用すると、ツリー文字は正確ですが、ソートはめちゃくちゃになります。
ソートが正しく機能するようにLC_ALL = Cに戻します。
Mint Mate 20.1以前は、ソートや文字の問題はなく、すべてうまく機能しました。