【Linux】文字コード変換はiconvコマンド1択です

Linux シェル/bash

Linux環境で文字コードの変換方法を調べる人

Linux環境で文字コードの変換方法を調べる人
「Linux環境で文字コードを変換するにはどうしたらいいでしょうか?よく使うSJISからUTF8,UTF8からSJISの変換や、それ以外の変換もLiuxではどんな変換ができるか教えて欲しいです。
それから、具体的なオプションなども含めたコピペ可能なコードも欲しいです。」

こんな悩みを解決します。

本記事ではLinux/Macの環境を前提にしています

本記事では、LinuxまたはMac環境を前提にしています。それ以外のUNIX環境では一部の動作が異なることがあります。

この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。

これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。

本記事の内容

Linux環境の文字コード変換はiconv一択です

まず、Linux環境で文字コードを変換する方法を列挙します。

nkfは今どきオススメしません

②nkfは富士通が開発した文字コード変換ツールです。デフォルトではインストールされていないのが一般的で、別途パッケージをインストールする必要があります。
昔はよく使われていましたが、(1)国際規格への準拠、(2)GNUでの実装が行われておらず、プログラムのコンセプトが古いです(iconvは(1)(2)いずれも準拠)。

viでの変換もあまりオススメしません

③viコマンドによる変換も可能ですが、開いたファイルに対して操作するため、複数ファイルを一括処理したい場合を鑑みると汎用性に欠けます。

よって古いUNIX環境を保守している場合(②nkfが標準の環境)を除き、iconvによる変換だけ覚えておけば十分です。

iconvで文字コード変換する構文

構文は以下の通りです。

iconv -f 《変換前の文字コード》 -t 《変換後の文字コード》 《変換対象ファイル》

iconvでShift-JISからUTF8へ変換

iconv -f SJIS -t UTF8 《変換対象ファイル》

SJISからUTF8へ文字コードを変換する例を示します。

iconvでShift-JISからUTF8へ変換

Shift-JIS,UTF8は次のように指定します。

iconv -f SJIS -t UTF8 《変換対象ファイル》

SJISからUTF8へ文字コードを変換する例を示します。

iconvでUTF8からShift-JISへ変換

構文は以下の通りです。

iconv -f UTF8 -t SJIS 《変換対象ファイル》

UTF8からSJISへ文字コードを変換する例を示します。

iconvでUTF8,SJIS以外の文字コードを指定

iconvの-lオプションを指定すると、お使いのバージョンで指定できる文字コードの一覧を表示することができます。
例えば1行目は、UTF8を指定することができ、「UTF-8」と書いても「UTF8」と書いても同じ意味(UTF8)として解釈をするよ、ということを表現しています。

おわりに

今回は以上です。よく使うSJISとUTF8の文字コード変換を例に解説しました。Linuxの文字コード変換について一助となりましたら幸いです。