Web2.0を意識したシステム構築ではXMLを扱う頻度が増え、同時にデザインテンプレートやスクリプトなども文字コードをUTF-8に統一したいというシーンが出てくるのではないでしょうか。それ以外にも文字コードをディレクトリ単位で変換したいシーンがあると思います。

世の中には文字コード変換専用のフリーツールが多数存在しますが、ここではUNIXコマンドによる文字コード変換を紹介します。

1.特定ファイルの文字コードを変換する

文字コードを変換する為のコマンド[nkf]を紹介します。 nkfは入力ファイルの文字コードを自動的に認識して指定の文字コードに出力してくれます。勿論、入力ファイルの文字コードを指定する事もできます。また、改行コードなどの指定も可能です。

代表的なnkfの文字コード・改行コードの出力オプションを紹介します

  -j   JISコードの文字コードを出力する
  -e   EUCコードの文字コードを出力する
  -s   Shift-JISの文字コードを出力する
  -w   UTF-8の文字コードを出力する
  -Lu  LFの改行コードを出力する
  -Lw  CRLFの改行コードを出力する
  -Lm  CRの改行コードを出力する

などがあります。

詳細は

$man nkf

$nkf --help

をご参照ください

文字コードがEUCのexample.phpファイルをUTF-8変換して出力する。

$nkf -E -w example.php > example_utf8.php

example.phpの文字コードを自動判別してUTF-8・改行コードをLFに変換して出力する。

$nkf -w -Lu example.php > example_utf8.php

これまでは、上記のように文字コード変換を行ったファイルを、わざわざ標準出力より別名で保存していたと思います。そんなビジネスパーソンの皆様に朗報があります。

2.overwriteオプション

実はnkfコマンドにはoverwriteというオプションがあります。

example.phpをUTF-8に変換して書き換える

$nkf --overwrite -w example.php

ここまで解ってしまえば後は簡単。

3.ディレクトリ以下のPHPファイルを全てUTF-8に変換する
$find -name '*.php' | xargs nkf --overwrite -w

アイディア次第でWindowsツールいらずな所がUNIXコマンドの良いところでもありますね。