iconv: 文字コードを変換するコマンド
Windowsの閉じた世界で生活しているとあんまり困らないのですが、Linuxなどのオープンな世界に踏み出すと、日本語の文字コードを変換したいことがよくあります。
ひとむかし前であれば、真っ先に思い浮ぶのが nkf だったのですが、これは日本語限定の変換ツールであったため、外国人からのうけが悪く、FedoraやUbuntuといった世界中で展開するディストリビューションにはなかなか取り込まれなかったという経緯があります。日本では一大勢力を築いて、今でもまれに使用されている nkf ではありますが、これから新規に覚えるのであればお薦めは出来ません。
それでは、現在のGNU/Linuxで世界的に使われている文字コード変換のソリューションは何か? というと、それは iconv と呼ばれるAPI/ライブラリ/コマンドになります。
iconv は文字コード変換のためのAPIで、その仕様は POSIX 規格にも採用されています。最近の GNU C ライブラリには標準で iconv ライブラリが同梱されていて、日本語だけでなく、世界中の多数の言語に対応しているため、多くのGNUアプリケーションが iconv を使用しています。
また、シェルからiconv APIを簡単に利用するために、同名のiconvというプログラムが用意されているので、任意のテキストを変換したり、パイプに噛まして別のプログラムに流し込むこともできます。
$ iconv -f SHIFT-JIS -t UTF-8 ./README.TXT (Shift JIS で書かれた README.TXT を、 UTF-8 に変換して表示) $ cat some-mail.txt | iconv -f ISO2022JP -t EUC-JP | some-filter (JISコード(ISO-2022-JP)で書かれた some-mail.txt を EUC-JP に変換したうえで、 some-filter にかける) $ iconv -l (対応文字コード一覧を表示) $ iconv --help (使用方法の簡易リファレンスを表示)
というわけで、今日は「そろそろ脱nkfしませんか」という提案でした。
(2008-04-06 追記: 改行コード変換と上書きモードに関して、続きのエントリを書きました)