iconv: 文字コードを変換するコマンド

漢字から漢字へ


Windowsの閉じた世界で生活しているとあんまり困らないのですが、Linuxなどのオープンな世界に踏み出すと、日本語の文字コードを変換したいことがよくあります。

ひとむかし前であれば、真っ先に思い浮ぶのが nkf だったのですが、これは日本語限定の変換ツールであったため、外国人からのうけが悪く、FedoraUbuntuといった世界中で展開するディストリビューションにはなかなか取り込まれなかったという経緯があります。日本では一大勢力を築いて、今でもまれに使用されている 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 追記: 改行コード変換と上書きモードに関して、続きのエントリを書きました