Windowsでコマンドで文字コードを変換する方法「nkf」

Windowsでコマンドで文字コードを変換する方法「nkf」

Windowsのコマンドプロンプトでサポートされている文字コードは、基本的には「Shift_JIS」のみですが、最近ではWebを始めとして「UTF-8」が使われるケースが多くなっており、Windowsコマンドを使った処理でも複数の文字コードを扱いたい機会が増えています。

そんなときに便利なのが、コマンドで文字コードを変換できるツールとして定番の「nkf(Network Kanji Filter)」です。

そこでここでは、Windows 10での「nkf(Network Kanji Filter)」の使い方を紹介します。

nkf(Network Kanji Filter)とは

nkfは、文字コード変換ツールとしてかなりの歴史があります。

nkfは1987年、市川至らによって開発された。ソースコードが公開され、有志によってBSDやWindowsへも移植された。nkfが対応する文字コードはJIS コード、cp932(Shift-JIS)、日本語 EUC、UTF-8、UTF-16であり、相互に変換することができる。 入力/出力はファイルからのみではなく標準入力/標準出力を利用することも可能である。 入力の文字コードはできる限り自動判別するため、基本的には出力の文字コードを指定するだけで使用できる。

Network Kanji Filter - Wikipedia

nkfのインストール

Windows向けのnkfツールは、以下のサイトから入手できます。

nkf.exe nkf32.dll Windows用の詳細情報 : Vector ソフトを探す!

ダウンロードしたファイルを展開し「vc2005win32(98,Me,NT,2000,XP,Vista,7)Windows-31J」フォルダーの中にある「nkf32.exe」という実行ファイルを、パスの通ったフォルダーに保存すれば準備完了です。

nkfコマンドの使い方

nkfは「nkf ファイル名」でファイルを指定したり、パイプなどを利用して標準入力から受け取った内容を変換して、標準出力に書き出すことができます。

文字コードを指定する場合は、次のようなオプションを指定します。これ以外のオプションについては、ツールに付属しているヘルプファイル(nkf.txt)を参照してみてください。

ちなみに、オプション指定なしで実行するとShift_JISに変換してくれます。

オプション説明
-jJISコード
-eEUCコード
-sShift_JISコード
-wUTF-8(BOMなし)
-w8UTF-8(BOMあり)
-w16UTF-16(ビッグ・エンディアン。BOMあり)
-w16LUTF-16(リトル・エンディアン。BOMあり)

たとえば、Windowsのメモ帳で文字コードUTF-8のテキストファイルを用意して、コマンドプロンプトからtypeコマンドで表示すると、以下のように文字化けします。

Windowsでコマンドで文字コードを変換する方法「nkf」

これをnkfコマンドを利用しShift_JISに文字変換することで、正常に表示することができ、リダイレクトを使用すれば、変換後のテキストをファイルに保存することもできます。

Windowsでコマンドで文字コードを変換する方法「nkf」

上の例では、パイプを使って変換していますが、次のように直接ファイルを指定して変換することもできます。

> nkf -s e:utf8.txt

あとがき

nkfは、文字コード変換で使われる定番のツールと言えます。かなり古くからあるツールですが、いまだに現役とはすごいです。

ご活用あれ。