Linuxでテキストファイルの文字コードを変換する方法のメモ。
nkfを使う
$ nkf [オプション] 入力ファイル > 出力ファイル
オプション
| -j (デフォルト) | JISコードを出力 |
| -e | EUCコードを出力 |
| -s | Shift-JISコードを出力 |
| -w | UTF-8コードを出力 |
| -Lu | 改行コードをunix形式(LF)に変換 |
| -Lw | 改行コードをwindows形式(CRLF)に変換 |
| -Lm | 改行コードをmac形式(CR)に変換 |
UTF-8に変換。
$ nkf -w filename > filename.utf8
入力ファイルに上書きするときは、--overwrite オプションを使う。
$ nkf -w --overwrite filename
カレントディレクトリ以下のファイルを再帰的に変換する。(テキストファイル以外も変換されるので注意が必要)
$ find . -type f -exec nkf -w --overwrite {} \;
xargsを使う方法。
$ find . -type f | xargs nkf -w --overwrite
変換対象を「*.html」にする。
$ find . -name "*.html" | xargs nkf -w --overwrite
perl(Jcode.pm)を使う
$ perl -MJcode -i -lpe 'Jcode::convert(\$_, "文字コード")' 入力ファイル
再帰的に変換。
$ find . -type f | xargs perl -MJcode -i -lpe 'Jcode::convert(\$_, "utf8")' $ find . -type f | xargs perl -MJcode -i -lpe 'Jcode::convert(\$_, "euc")'
ファイル名の文字コード変換
convmvを使う。カレントディレクトリにあるファイル名をEUC-JPからUTF-8に変換する場合。
$ convmv -f euc-jp -t utf8 *
上記のコマンドでは確認のみで実際に変換はしない。変換するときは、--notest オプションをつける。
$ convmv -f euc-jp -t utf8 * --notest
-r オプションで再帰的に変換できる。
$ convmv -r -f euc-jp -t utf8 * --notest
変換できる文字コードの確認。
$ convmv --list
トラックバックURL