Engineering Note

プログラミングなどの技術的なメモ

iconvコマンドでファイルの文字コードを変換する

console

 

Linux環境で設定している文字コードと異なる文字コードのファイルをを扱いたいときがあり、その際にiconvコマンドで簡単に文字コードを変換することができます。

今回はiconvコマンドの基本的な操作方法について学んでいきます。

 

 

文字コードの異なるファイル

先日参考書籍のソースプログラムにあったreadme.txtというファイルをlessコマンドで開こうとした際に、以下の確認が出ました。

 

 $ less readme.txt 
 "readme.txt" may be a binary file.  See it anyway?

 

今回のファイルの文字コードEUC-JPであったため、

こちらをシステム環境の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

 

これで読めるようになりました。

 

参考書籍

新しいLinuxの教科書