Linux環境で設定している文字コードと異なる文字コードのファイルをを扱いたいときがあり、その際にiconvコマンドで簡単に文字コードを変換することができます。
今回はiconvコマンドの基本的な操作方法について学んでいきます。
文字コードの異なるファイル
先日参考書籍のソースプログラムにあったreadme.txtというファイルをlessコマンドで開こうとした際に、以下の確認が出ました。
$ less readme.txt "readme.txt" may be a binary file. See it anyway?
こちらをシステム環境のUTF-8に変換して読めるようにしていきます。
iconvコマンドの使い方
まずはiconvコマンドの確認をしていきます。
$ iconv --version iconv (GNU libiconv 1.11) Copyright (C) 2000-2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Bruno Haible.
サポートしている文字コードのリストを確認するには以下のコマンドで確認することができます。
今回はEUC-JPからUTF-8へ変換をするため、サポートされた文字コードかをgrepをかけてみます。
$ iconv -l | grep -e "EUC-JP" -e "UTF-8" UTF-8 UTF8 UTF-8-MAC UTF8-MAC EUC-JP EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE
両方ともサポートされていることが確認できたので、これから変換をかけていきたいと思います。
文字コードを変換する
変換をする場合は以下の形式でコマンドを実行します。
iconv -f 変換前文字コード -t 変換後文字コード 入力ファイル
バージョンによっては-o
オプションで出力するファイル名を指定できるようですが、私が使っているバージョンでは存在しないため、そのままリダイレクトさせています。
$ iconv -f EUC-JP -t UTF-8 readme.txt > readme_conv.txt $ file readme_conv.txt readme_conv.txt: UTF-8 Unicode text
これで読めるようになりました。