クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
シェル

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 -l

$ iconv -h
Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...]
or:    iconv -l

iconvの文字コード変換

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

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

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

$ vi hoge.txt 

文字コードはUTF-8です

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

# UTF-8 --> EUC-JP
$ iconv -f UTF-8 -t EUC-JP hoge.txt > hoge_euc.txt

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

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

文字コードはUTF-8です

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

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

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

Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/09/20 11:58:13時点 Amazon調べ-詳細)

あなたにオススメ