Linux

iconvでファイルの文字コード変換

仕事で EUC の文字コードのファイルしか受け付けないシステムがあったので、nkf で文字コードを変換しようと思ったらインストールされてない・・・。

こんな時は iconv しかシェルで頼るものはないのですが、さすがにこれは入ってました。
(今回は IBM AIX のサーバです)

勝手にインストールができない環境だと何かで代替案を考えなければなりません。

今回は iconv での文字コード変換を紹介したいと思います。

iconvについて

iconv は一般的には変換元と変換先の文字コードの両方を指定するのですが、その文字コード文字列が OS によって大きく違うので要注意です。

例えば、FreeBSD だとシフト JIS は SHIFT_JIS を、EUC は EUC-JP、ユニコード(unicode)だと UTF-8 が一般的でしょうか。

AIXにおけるiconv

これが AIX になると、シフト JIS は IBM-943(IBM-932)、EUC は IBM-eucJP、ユニコード(unicode)は同じく UTF-8 です。

使える文字コードについては iconv の -l オプションで確認できます。

iconvの文字コード変換

iconv の文字コード変換の使い方は下記の通りです。

変換前の文字コードと変換後の文字コードを指定したら、変換後の結果が標準出力されます。

まずは UTF-8 で以下のファイルを作成します。

このファイルを EUC-JP に変換してみましょう。

hoge_euc.txt を EUC が読み込めるテキストエディタで開いてみます。

以下が文字化けせずに見えれば成功です。

文字コードはUTF-8です

nkf が使えたらそっちが早いかもしれませんが iconv も覚えておいて損はありません。

perl だと jcode とか使ってガリガリするのでしょうか。

過去に「Perlでnkfを使う」の記事を書いたのを思い出しました。

Perlでnkfを使うqmail の Maildir 形式でメールを受け取り、それをシェルや Perl スクリプトで処理する時に、エンコード周りで問題になるこ...