Linux logo

Linuxで文字コードが変換できる便利なnkfコマンドについて書き留めます。

 

スポンサードリンク

 

nkfコマンドの使い方

コマンドとファイル名を入力すれば文字コードの変換が行われます。

オプションをつけない場合は自動的にJISコードに変換されます。

 

nkfコマンドのオプション

オプションの–overwriteを利用することで、元ファイルに文字コードの変換を適用することが出来ます。

–overwriteを付けないと標準出力(ターミナル)に結果が出力されます。

nkfコマンドの実行

実際にnkfコマンドを試してみます。

忙しい方はサンプルコードまでスキップ

文字コードが異なるサンプルファイル

まずecu-jp, shift-jis, utf-8, utf-8-bomの4種類の文字コードで記述されたサンプルファイルを用意します。

fileコマンドで確認してみると無事それぞれの文字コードで記録されていることが確認できます。

nkfコマンドと-gオプションでも文字コードを確認してみるとfileコマンドとほぼ同じ結果が得られました。

nkfコマンドで文字コードを変換

試しにシフトJISで保存されたファイルをnkfコマンドで変換してみました。

-gオプションで確認してみると無事文字コードの変換が完了していることが確認できました。

Linux nkfコマンド BOM有 変換

次はUTF-8(BOM無)をUTF-8(BOM有)に変換してみました。

Linux nkfコマンド BOM無 変換

反対にUTF-8(BOM有)をUTF-8(BOM無)に変換してみました。

–ocオプションを利用する際は改行コードの指定をしないと改行コードが上手く出力されないようです。

改行オプションを付けずに変換したファイルはWindowsのメモ帳で開くと改行が認識されませんでした。

改行コードを明示しない場合は、Unix系かMac系の改行コードになっているようですね。

 

サンプルコード

使いそうな文字コードへの変換コマンドをまとめてみました。

utf-8 BOM無し (改行コード:Windows)

UTF-8 BOM有り (改行コード:Windows)

UTF-8 BOM無し (改行コード: Unix)

UTF-8 BOM有り (改行コード: Unix)

EUC-JP (改行コード: 変更なし)

EUC-JP (改行コード: Unix)

シフトJIS (改行コード: 変更なし)

シフトJIS (改行コード: Windows)

参考サイト

nkf(1): Network Kanji Filter – Linux man page

Ubuntu Manpage: nkf – ネットワーク用漢字コード変換フィルタ

【Linux】nkfコマンド / 文字コードを変換する
Tagged on:

コメントを残す