lessで文字化けするときの対処法

はじめに

lessShift-JIS で保存されたファイルを閲覧するときに文字化けするので、その時に行った際の対処

環境

Windows 11 Professional
WSL2 Ubuntu 24.04 LTS

準備

EUC-JP, Shift-JIS, UTF-8で保存したテキストファイルを用意する。   各ファイルに日本語で適当な文字列を書き込んでおいた。  

euc-jp.txt
shift-jis.txt
utf-8.txt

lessでの確認

EUC-JPテキストファイル

EUC-JP<A4><C7><CA><DD>¸<A4><B7><A4>Ƥ<A4><A4>ޤ<B9><A1><A3>

Shift-JISテキストファイル

Shift-JIS<82>ŕۑ<B6><82><B5><82>Ă<A2><82>܂<B7><81>B

UTF-8テキストファイル

UTF-8で保存しています。

対処方法 (iconvで変換する)

EUC-JPの場合

iconv -f euc-jp -t utf-8 [ファイル名] | less

EUC-JPで保存しています。

で表示できた。

Shift-JISの場合

iconv -f sjis -t utf-8 [ファイル名] | less

Shift-JISで保存しています。

で表示できた。

対処方法 (LESSOPEN)

LESSOPENの環境変数を使うと、lessで開く前にコマンドを実行できる。   これを利用し、iconvを通してエンコーディングを変換することで文字化けせずに開くことができる。  

Shift-JISの場合

export LESSOPEN="| iconv -f shift_jis -t utf-8 %s"
less [ファイル名]

EUC-JPの場合

export LESSOPEN="| iconv -f euc-jp -t utf-8 %s"
less [ファイル名]

文字コードを自動判別してUTF-8で開く場合

nkfコマンドがインストールされている必要がある。

export LESSOPEN="| nkf -w %s"
less [ファイル名]

対処できなかった方法(LESSCHARSET)

less の環境変数にLESSCHARSETを使う。 ※manコマンドでlessのマニュアルページを見ると、ENVIRONMENT VARIABLES のセクションに記載がある。

export LESSCHARSET=utf-8
less [ファイル名]

EUC-JP, Shift-JISの文字コードだとだめっぽい。

参考

おわりに

lessコマンドで文字化けするときがあったので対処法をまとめた。
nkfコマンドがインストールされていれば、.bashrcとかにLESSOPEN環境変数を定義しておくのが良さそう。
それ以外の場合は、開いた時にiconvで変換すれば良いのかなと思う。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。