システムはもはやUTF-8文字を出力しません。

システムはもはやUTF-8文字を出力しません。

サーバーが非常に遅く応答する問題が発生し、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

質問の情報は概略的です。ただし、サンプル出力には、エンコードツリーに予想以上の文字があるというエラーが表示されます。treeUTF-8が送信できる環境で実行されている可能性があります。使用されるグラフィック文字の場合、各特殊文字は3バイトを占めます。一方では(ローカルでもリモートでも構いません)、OPは次のよ​​うなものを使用しています。録音これをUTF-8に変換してバイト数を増やします(出力の各バイトtree範囲は128-255なので)。

たとえば、OPが実行されている場合xterm(使用ルイット)、そして(実際に)luitに実際のエンコーディングがと言って混乱を与えるために、en_GB128-255値のそれぞれを2-3バイトに変換します(「UTF-8に「返す」)。

さて、強く打つ質問と関係がないので(ユニークなユーティリティ)テキストを作成するためのものです。

おすすめ記事