todoroki@todoroki-VJZ13B ~>printf "ä\n"
echo "ä"
ä
ä
ä
\udcc3\udca4: \u30b3\u30de\u30f3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
によるとUTF-16デコードツール、\u30b3\u30de\u30f3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
is コマンドが見つかりません
(= "コマンドが見つかりません")、これは私が期待する正しい日本語出力です。
printfとechoの結果を見ると、UTF-8が正常に動作しているようです。
これはすべてのシェル出力で発生します。たとえば、ls
ファイル名の日本語文字はUTF-16 16進数で表されます。
編集する: ls
出力はutf-16ではありませんが、「8進エスケープシーケンス」(に月
なります\346\234\210
)です。
ls
C
、および:という名前の3つのフォルダを含むあいう
ディレクトリ月
:
todoroki@todoroki-VJZ13B ~/test> ls -l
total 12
drwxr-xr-x 3 todoroki todoroki 4096 10月 4 15:02 C/
drwxr-xr-x 2 todoroki todoroki 4096 10月 11 09:04 ''$'\343\201\202\343\201\204\343\201\206'/
drwxr-xr-x 2 todoroki todoroki 4096 10月 11 09:05 ''$'\346\234\210'/
月
(ファイル作成日はちゃんと出てくるのにディレクトリ名は出てこないから変ですね)
less
vi
nano
動作はさらに奇妙です。以下のファイル(a.txt、geditを使用して生成されます)
あ
い
う
ä
次のように表示されます。
less
(それは文句を言う)"a.txt" may be a binary file. See it anyway?
:
<E3><81><82>
<E3><81><84>
<E3><81><86>
<C3><A4>
存在するvi
:
�~A~B
�~A~D
�~A~F
ä
そしてnano
:
^a^b
^a^d
^a^f
私は何をしたのか覚えていませんが、少なくとも2日前(そして6ヶ月以上前)には日本語の文字が正しく表示されました。
何が問題であり、どのように回復できますか?
答え1
誤ってfish
設定ファイルを次の行に読み込むように~/.profile
更新
しましたlocale=C
。
に変更したところ、locale=C_UTF8
すべてが復元されました。