Linuxのターミナルが文字化けしたときの対処

Linuxをターミナルから使っているときに、なんらかの理由で表示される文字が文字化けしてしまう場合があります。ターミナルを終了させて再度実行すればいいんだけど、もっと手軽に直せないかというメモ。

文字が表示されない/改行がおかしい

ターミナルの設定がエコーなしになってたり、改行(LF)をCR/LFに変換しなくなったりする。

  • sttyの設定がおかしくなってる
    • stty -a すると、正常な場合と異常な場合で何箇所か違ってるはず
    • 正常な状態で stty -g した結果を保存しておき、異常になったらそれを実行する。
    • 改行が効かないときは ^J で代用できるはず。
#!/bin/sh

/bin/stty 2d02:5:4bf:8a3b:3:1c:7f:15:4:0:1:ff:11:13:1a:ff:12:f:17:16:ff:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

英字が化ける(SI/SO問題)

誤って SO (0x0E,0/14) を表示すると、英字にあたる領域(GL)にG1領域の文字が呼び出されてしまい、以後 英字が文字化けする。

  • SIを表示すれば治る
    • echo ^V^O
#!/bin/sh

echo "^V^O"

英字が化ける(screen問題)

screenを使っている場合、screen側の文字エンコーディングがおかしくなることがあるようだ。 screenのコマンドで下記のいずれかを指定。

:encoding utf8
:encoding euc

リンク

  • GNU/screen screenがハングアップしたときの対処など