Linuxサーバ上でテキストファイルの文字コードを一括変更


概要

太古のWEBサイトのメンテナンスを行う際、EUC-JPからUTF-8への文字コード変換をする必要があった――。

その際の備忘録。

やり方

今いるディレクトリの下にある一定の拡張子のファイルをすべて変換してしまう。

解説

詳細はマニュアルコマンドを実行して読もう。

事故りやすいので先に注意する点があります。
必ずバックアップを取ろう。
複数回実行すると壊れるのでやめましょう。

変換のオプションは大文字が変換前のコード、小文字が変換後のコード

オプション 文字コード
j JIS
e EUC-JP
s SJIS
w UTF-8N ※BOM無し

コマンド実行例

今いるディレクトリの下にいるファイルをeuc-jpと仮定し、全てutf-8に変換して上書きします。

  • このやり方のいい点はサブディレクトリがあっても適用できること。
  • 悪い点は文字コードを間違えるとファイルが壊れる。

コマンドライン

nkf - Network Kanji Filterを使用します。
下記はfindで検索を行い、その結果をxargsに渡してnfkの引数とし、各個に変換をかけていきます。

> mkdir ../bk
> cp -rp ./* ../bk/
> find ./ -name '*.txt' | xargs nkf -Ew --overwrite