nkf は日本語テキストの文字コード自動判定と相互変換、および改行コード変換・MIME(=?…?=) のデコード/エンコードを行うコマンドです。
実務では「CP932/Shift_JIS を UTF-8 に統一」「メールの MIME ヘッダを可読化」「LF/CRLF をそろえる」などで使われます。
構文(Syntax)
nkf [OPTIONS] [FILE...]
# 標準入力/出力も利用可能
cat in.txt | nkf [OPTIONS] > out.txt
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-w / -e / -s / -j | 出力エンコーディングを UTF-8/EUC-JP/Shift_JIS/ISO-2022-JP(JIS) に指定 | nkf -w in.txt > out.txt |
-g / --guess | 入力の推定文字コード名のみを表示 | nkf -g file.txt |
--ic=ENC / --oc=ENC | 入力/出力エンコーディングを明示(例: CP932, UTF-8-BOM, UTF-16LE など) | nkf --ic=CP932 --oc=UTF-8 in.txt > out.txt |
--overwrite | 変換結果で元ファイルを上書き(複数ファイル可) | nkf -w --overwrite *.txt |
-Lu / -Lw / -Lm | 改行を LF/CRLF/CR に統一(Unix/Win/Mac(旧)) | nkf -w -Lw --overwrite doc.txt |
-m / -M | MIME (RFC 2047) をデコード / エンコード | echo '=?ISO-2022-JP?B?...?=' | nkf -m -w |
-h / -V | ヘルプ / バージョン表示 | nkf -h |
参考: 入力コード指定 -J/-E/-S | 自動判定ではなく、入力を JIS/EUC/Shift_JIS とみなす | nkf -J -w in.txt |
例: UTF-8 に BOM を付けたい場合は
--oc=UTF-8-BOMを使用します。
実行例
UTF-8(LF) に統一(出力は別ファイルへ)
説明: Windows系の CP932/Shift_JIS を自動判定して UTF-8/LF にします。
コマンド:
nkf -w -Lu input_sjis.txt > output_utf8.txt
既存ファイルをそのまま上書き変換
説明: ディレクトリ内の .txt を UTF-8 に変換して 上書きします。
コマンド:
nkf -w --overwrite *.txt
MIME エンコードされたメール件名を可読化
説明: =?ISO-2022-JP?B?...?= のようなヘッダをデコード。
コマンド:
echo '=?ISO-2022-JP?B?GyRCJDMkbCQkRyQbKEI=?=' | nkf -m -w
改行を CRLF(Windows)にしつつエンコーディングは維持
説明: 文字コードは自動判定のまま、改行だけ Windows 形式に。
コマンド:
nkf -Lw --overwrite README.md
エラー例:存在しないファイルを指定
説明: ファイル名の誤りで失敗します。
コマンド:
nkf -w notfound.txt
出力例(例):
nkf: notfound.txt: No such file or directory
関連コマンド
iconv: 汎用の文字コード変換(自動判定なし、厳密制御)。dos2unix/unix2dos: 改行コード(CRLF/LF)の相互変換専用。recode: 文字コードの総合変換ツール。enca/uchardet: 文字コード推定(nkf -gと使い分け)。
備考
- 自動判定の限界:
nkfの判定は実用的ですが万能ではありません。誤判定が疑われる場合は--ic=や-J/-E/-Sで入力を明示しましょう。 - Windows-31J/CP932 拡張: 日本語環境では CP932(いわゆる Windows-31J)特有の外字/NEC 選定文字が混在します。
nkfは実運用に配慮した変換を行いますが、厳密な互換が必要ならテストを。 - BOM の扱い: UTF-8 出力は既定で BOM なし。必要に応じて
--oc=UTF-8-BOMを指定。 - ストリーム処理: 大きなファイルはパイプで流して一時ファイルを避けると安全です。
- 権限と上書き:
--overwriteは元ファイルを破壊的に変更します。VC 管理下ではコミット前に差分確認を。
参考
- OSDN: NKF(プロジェクトページ)
https://osdn.net/projects/nkf/ - manページ(Debian, nkf(1))
https://manpages.debian.org/unstable/nkf/nkf.1.en.html - リリース/配布物(OSDN Releases)
https://osdn.net/projects/nkf/releases/ - Homebrew Formula(macOS インストール)
https://formulae.brew.sh/formula/nkf

コメント