less の日本語の文字化けの直し方

最終更新:2023-06-16 by Joe

less で日本語を表示したときの文字化けの直し方です。

less の日本語の文字化けのなおし方

less の文字コードを明示的に設定しよう!

セットアップしたばかりの初期のサーバーなど、less で日本語が文字化けするときがよくあります。

文字コードをうまく判別できていない事が原因であれば、下記のコマンドでだいたい治ります。

$ export LESSCHARSET=utf-8

bashrc に書き込んで、初回ログイン時に自動適応

このコマンドを、恒久的に自動適応されるよう、~/.bashrc など、初期設定ファイルに記載しておきましょう。MacOSであれば、~/.zshrc かもしれません。

# bashrc を開く
$ vim ~/.bashrc


# 中に、デフォルトの文字コードを追記しておく
export LESSCHARSET=utf-8

なお、設定内容を即時に適応するときは、source コマンド(.bashrc の場合)で反映します。

$ source ~/.bashrc

shift-jis, euc-jp など日本語特有文字コードの場合

上記を行っても、shift-jis, euc-jp でエンコードされた日本語は、依然として文字化けしてしまいます。less はこのようなエンコーディングに対応していないからです。

# Shift-JIS で書かれたファイル。
$ less sjis.txt

<93><FA><96>{<8C><EA><93><C1><97>L<95><B6><8E><9A><83>R<81>[<83>h<82>͕<B6><8E><9A><89><BB><82><AF><82><B5><82>₷<82><A2><82>̂ő΍????I<82><CC>

ファイル自体を utf-8 で保存しなおすのがよい

vim などで文字コードをutf-8 に変換してファイルを保存しなおしたり、nkf コマンド(参考)で変換すればよいのですが、それがいちいち手間な場合は、iconv コマンドが便利です。

パイプで less に流し込みます。

# 直接 less に流し込みます
$ iconv -f SJIS sjis.txt -t utf-8 | less