はじめに
less
で Shift-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 の日本語の文字化けの直し方
https://www-creators.com/archives/6428nkfで文字コード変換 https://qiita.com/kentakozuka/items/d874a572ddf6cc34213f
lessで文字化けする時の対応方法
https://www.damonde9.com/lessで文字化けする時の対応方法/less コマンドで sjis とか euc-jp なファイルを表示する (LESSOPEN) https://devlights.hatenablog.com/entry/2020/09/07/125513
おわりに
less
コマンドで文字化けするときがあったので対処法をまとめた。nkf
コマンドがインストールされていれば、.bashrc
とかにLESSOPEN
環境変数を定義しておくのが良さそう。
それ以外の場合は、開いた時にiconv
で変換すれば良いのかなと思う。