UNIX/Linuxの部屋 コマンド: iconv


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド iconv 文字コードを変換する (パイプ)

iconv はロケールの仕組みにのっとった正統派文字コード変換コマンドである。nkf や qkc は日本語専用のため、便利ではあるが正統派とはいえない。

iconv は変換元文字コードと変換後文字コードの両方を指定する。
% iconv -f EUC-JP -t Shift_JIS < infile.txt > outfile.txt
⇒ infile.txt の文字コードを EUC-JP とみなし、Shift_JIS に変換して outfile.txt に出力する。
FreeBSD など一部の iconv では、変換元か変換後のいずれかの文字コードを省略した場合、環境変数 LC_ALL や LANG などに設定されているロケールを使用するが、すべての iconv でそのような挙動をするとは限らない。

入力ファイルに無効な文字 (-f で指定した文字コードと矛盾するようなデータ) が含まれていた場合、iconv はエラーとして終了する。FreeBSD の iconv では -c オプションを指定することで、無効な文字を無視して無視して続行することができる。Linux はなぜか man に記載はないが、-c オプションを指定できる (man にはないが、iconv --help だと -c オプションが表示される)。その他の iconv では必ずエラーで終了してしまうようだ。

iconv で指定する文字コードは OS によってかなり異なる。例えば HP-UX では EUC-JP や euc-jp ではダメで、eucjp としなくてはいけない。使用可能な文字コード一覧を調べる方法は iconv の実装によって異なるため、以下の方法を試してみてほしい。
% iconv -l
⇒ 使用可能な文字コード一覧を表示 (FreeBSD の iconv で確認)
% iconv --list
⇒ 使用可能な文字コード一覧を表示 (GNU の iconv で確認)
% man iconv
⇒ 文字コード一覧表示機能がない場合はマニュアルを読むこと

iconv はファイル内容のエンコーディングを変換するコマンドである。「ファイル名」のエンコーディングを変換する場合は、convmv コマンドを使うこと。
>> Solaris10オンラインマニュアル(man) Solaris10 iconv(1)
>> Linuxオンラインマニュアル(man) Linux iconv(1)
>> Linuxオンラインマニュアル(man) Linux iconv(3)

読み方 iconv (C関数) (UNIXコマンド) [あい・こんぶ]

エンコーディング (文字コード) 変換関数、あるいはエンコーディング変換コマンド、あるいはそのライブラリ。由来は international converter あたりではないか。


頑張って書いたおすすめコンテンツ!