Terminal
終端顯示非ASCII?UTF-16 十六進制程式碼中的字元
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
是コマンドが見つかりません
(= “command not found”),這是我期望的正確日語輸出。從 printf 和 echo 結果來看,UTF-8 似乎工作正常。
這發生在所有 shell 輸出中,例如
ls
(文件名中的日文字元以 UTF-16 十六進制格式顯示)編輯:
ls
輸出不是 utf-16,而是稱為“八進制轉義序列”的東西(月
變成\346\234\210
)
ls
在包含 3 個名為 、 和輸出的文件夾的C
目錄あいう
中月
: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
我不記得我做了什麼,但它至少在兩天前(並且超過 6 個月)正確顯示了日文字母。
可能是什麼問題以及從中恢復的方法?
我不小心更新了
fish
要讀取的配置文件~/.profile
,其中包含一行內容
locale=C
。我把它改成了
locale=C_UTF8
,一切都恢復了。