日本語文字コードを変換する・iconvコマンド

iconvコマンドを使用すると、文字コードの変換を行うことができます。
現代の多くのLinux(AlmaLinux、Rocky Linux、Ubuntuなど)では、標準(POSIX準拠)で最初からインストールされているため、
追加のインストールなしですぐに利用できるのが大きなメリットです。

以下に、iconvコマンドを使用した各種日本語文字コードの変換実行例を記します。

■ 目次


スポンサーリンク

関連記事・関連資料

iconvの基本構文

iconvは、入力文字コード(From)と出力文字コード(To)を明示的に指定して変換します。
基本の構文は以下の通りです。

iconv -f 入力文字コード -t 出力文字コード 入力ファイル名 > 出力ファイル名

主要な文字コードの指定文字列は以下の通りです。

文字コード指定方法
UTF-8UTF-8
Shift_JISSHIFT_JIS (または CP932 ※推奨)
EUC-JPEUC-JP

WindowsのShift_JISファイルを扱う際のTips

Windowsで作成されたShift_JIS(機種依存文字を含むもの)を変換する場合、-f SHIFT_JIS よりも -f CP932 を指定した方が、文字化けやエラーを防ぎやすいため推奨されます。

UTF-8から各種日本語の文字コードに変換してみる

以下のようなUTF-8で作成したテキストファイル(aiueo-utf8.txt)を元に、各種文字コードへ変換してみます。

UTF-8からSJIS(CP932)への変換

以下のコマンドにより、UTF-8からShift_JISに変更されます。

$ iconv -f UTF-8 -t CP932 aiueo-utf8.txt > aiueo-sjis.txt

SJISからUTF-8への変換

先ほど作成した aiueo-sjis.txt を、元のUTF-8に戻してみます。

$ iconv -f CP932 -t UTF-8 aiueo-sjis.txt > aiueo-utf8-2.txt

EUC-JPへの変換

UTF-8からEUC-JPに変換する場合は以下のように指定します。

$ iconv -f UTF-8 -t EUC-JP aiueo-utf8.txt > aiueo-euc.txt

実務で使える応用テクニック

エラーが発生しても強制的に変換を続行する(-cオプション)

iconvはデフォルトでは、ファイル内に変換できない不正な文字が含まれていると、途中で処理を中断してしまいます。
変換できない文字を無視して(スキップして)最後まで変換したい場合は、-c オプションを付与します。

$ iconv -c -f CP932 -t UTF-8 input.txt > output.txt

元のファイルを直接上書き変換する(シェルスクリプト連係)

iconvには nkf のような --overwrite(上書き)オプションがありません。
元のファイルを直接書き換えたい場合は、以下のように一時ファイル(tmp)を経由して上書きします。

$ iconv -f CP932 -t UTF-8 input.txt > input.txt.tmp && mv input.txt.tmp input.txt

ディレクトリ内の複数ファイルを一括変換する

拡張子が .txt のファイルをすべて一括でUTF-8に変換したい場合は、for ループを組み合わせると便利です。

for f in *.txt; do
    iconv -f CP932 -t UTF-8 "$f" > "$f.tmp" && mv "$f.tmp" "$f"
done

まとめ

本記事では、現代のLinux環境において標準の文字コード変換ツールである iconv コマンドについて解説しました。
nkf のような「自動文字コード判定機能」はありませんが、OSの初期状態で確実に動作し、かつ動作が非常に高速であるため、
現代のシステム開発や運用保守においては必須のコマンドとなっています。
状況に応じて nkf と上手に使い分けてみてください。


スポンサーリンク


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2026-06-05 (金) 06:35:58