* last modifed (y/m/d): 2014/5/30 , To N. Tajima's Home Page in English or Japanese

Windowsで日本語文字コードの種類の判別や変換を行うには (nkf のインストール方法)

Windowsで 日本語文字コードの種類の判別や変換を行う定番の方法は nkf という フリーのアプリケーション・ソフトウエアを利用することです。 この文書では Windowsで nkf を利用するための手順をまとめました。

インストールの仕方

参考URLリストの記事[文献1]がよい参考になりました。

  1. www.vector.co.jpの 「 nkf.exe nkf32.dll Windows用 」 で 「このソフトを今すぐダウンロード」をクリックし、 nkfwin.zip (868kB)というファイルを保存する。
  2. 保存したnkfwin.zipを右クリックして「全て展開(T)...」を選ぶと、 nkfwin という名前のフォルダーができる。
  3. 下記の2つのファイルだけを使う。
    1. nkfwin\nkf.txt

      このテキスト・ファイルは使用方法の説明書です。

      参考情報:このテキストファイルの文字コードはShift-JIS,行末記号はCR+LFです。

    2. nkfwin\vc2005\win32(98,Me,NT,2000,XP,Vista,7)Windows-31J\nkf32.exe

      このバイナリー・ファイルは「コマンド行」で実行するアプリケーション・ソフトウエアです。

      Windowsの環境変数「Path」に含まれるフォルダーに nkf32.exeをコピーしておくと使い易いです。使用方法の例は後述します。

  4. 他のファイルの内容:

    上記の2つ以外のファイルはさしあたり使用することはないと私には思われますが、 念のため説明しておきます。

    1. nkfwin\vc2005\win32(98,Me,NT,2000,XP,Vista,7)Windows-31J\nkfwin32.exe

      このバイナリー・ファイルは、「ファイル名を指定して実行」 [補注A] 窓から実行するアプリケーション・ソフトウエアです。

      使用説明書nkf.txtの記載を読んで試してみたところ私にも使えましたが、 使い勝手が悪く、今後使うことはないだろうと思いました。

    2. vc2005\dll(NT,2000,XP,Vista,7)\nkf32.dll

      「nkf*.exe はnkf32.dllを必要としない」ことは私自らも試して確認できました。

      nkfの機能を利用する アプリケーション・ソフトウエア群が別途開発されており、 それらはnkf32.dllを必要とするらしい、と説明書を読んで理解しました。

    3. vc2005\win32(98,Me,NT,2000,XP,Vista,7)ISO-2022-JP\nkf.exe, nkfwin.exe

      nkf.exe・nkfwin.exeとnkf32.exe・nkfwin32.exeとの違いは、 変換後の文字コードが、defaultでは(無指定時には)、 前者がJISコードであるのに対し、後者が Shift-JISコードであるということの1点だけであると、 説明書を読んで理解しました。

nkf32.exeの使い方 (1) 文字コードの判別

何らかのテキストファイルa.txtの入ったフォルダーに、nkf32.exeがコピーして あるという状況で、a.txtの文字コードを調べるには、下記のようにします。 3通りのいずれの場合でも、結果は下記の一行で表示されます。

         Shift_JIS(CRLF)

  1. Windows Command Prompt(旧称「DOS窓」「MSDOSプロンプト」)では:

       nkf32 -g a.txt

    コマンド行引数の「-g」は「--guess」と書くこともできます。 [補注B]

    なお、nkf32.exeがWindowsの実行可能ファイル検索パスに含まれたfolderに置いてあれば、 現在作業中のフォルダーがどこであっても実行できます。

    パスは、Windows Command Promptで、 「 echo %path%  」 とすれば表示されます。

    そのパスから選んだ1つのフォルダー [補注C]の直下に置けば目的は達せられます。

  2. Windows PowerShellでは:

       .\nkf32 -g a.txt

  3. cygwin terminalでは:

       ./nkf32 -g a.txt

    なお、もっぱらCygwin Terminalから使う場合は、Windowsの実行可能ファイル検索パスにnkf32.exeを置かずとも、 bash の設定ファイルで、例えば

    alias nkf='/cygdrive/c/Users/tajima/Documents/bin/nkf32.exe'

    のようなコマンドで alias を定義しておけば、どのfolderにいても、単に

    nkf -g a.txt

    として C:\Users\tajima\Documents\bin\においたnkf32.exeが使えます。

nkf32.exeの使い方 (2) 文字コードの変換

  1. a.txt(任意の文字コード)を変換して、文字コードがUTF-8(BOM無し)のファイルb.txtを作るには

       nkf -w a.txt > b.txt

  2. a.txt(任意の文字コード)を変換して、UTF-8(BOM付き)コードのファイルb.txtを作るには

       nkf -w8 a.txt > b.txt

  3. a.txt(任意の文字コード)を変換して、Shift JISコードのファイルb.txtを作るには

       nkf -s a.txt > b.txt

  4. a.txt(任意の文字コード)を変換して、JISコードのファイルb.txtを作るには

       nkf -j a.txt > b.txt

  5. a.txt(任意の文字コード)を変換して、EUCコードのファイルb.txtを作るには

       nkf -e a.txt > b.txt

  6. 改行コードの変換も指示できる。
    1.    -Lu でUNIXのLFに、
    2.    -Lw でWindowsのCR+LFに、
    3.    -Lm でMacのCRに、変換される。
  7. 使用説明文書には、上記以外にも多くのオプションが書かれている。

(参考)WIndows用nkf32.exeを使わない方法

  1. cygwinでnkfをmakeする (C言語のプログラム・ソース・ファイルをコンパイルして作る)

    Windows用バイナリーはcygwinからも実行できますが、 それでは何らかの不都合が発生した場合 (例えば、もしも再び、Windows用バイナリーが提供されなくなったり、 改訂が必要なのに改訂されずに放置されるようになった場合)は、 自分でmakeする必要があります。[補注D]

    方法は、「nkf cygwin make」で検索してみて下さい。 あるいは、 nkf-2.1.3.tar.gz に同梱の説明文書だけでもわかる人もいるでしょう。

  2. virtualbox上のLinuxでnkfを使う

    linuxでは、多くのdistributionにnkfがパッケージとして含まれています。 例えばFedora20では、

       yum install nkf

    でインストールできます。

    (別項で述べる予定の)virtualBox上にLinuxをinstallし、 そのLinuxにnkfをinstallし、そのnkfを使って、 共有フォルダー (Linuxからもアクセスできるように設定したWindowsファイルシステムのフォルダー) に置いたtext fileの文字コードを調べたり変換したりすることができるのです。

  3. nkfを使わない方法

    参考URLリストの[文献1]に、 windows power shellで、power shellスクリプトを書けば、 文字コード変換のためのWindows APIを利用できると書いてあります。 [補注E]

補足説明

[補注A]

Windows7,8で「ファイル名を指定して実行」窓を開くには、「WindowsKey」キーと「r」キーを同時に押し下げます。 なお、WindowsKeyとはキートップに波打った「田の字」型の図形の描かれたキーです。

[補注B]

「guess」は文字コードを推測するということを意味しているわけですが、 推測なので間違えることもたまにあります。

私の経験でも、ファイルを編集しているうちに文字コードが判別できなくなること がときどき起きました。 例えば、web pageからtext fileへとcopy and pasteしたときに、 web page中に「text fileで使っている文字コード」に変換できない文字が含まれていて、それが貼り付けられることが原因で、 そのtext file全体の文字コードが判別不能になることが何度かありました。

対策として、コピー元に予想外の文字が含まれていそうな予感がするときは、 第一のステップとして、別の新規作成ファイルにpasteして問題のおきないことを確かめてから、 第二のステップとして、その新規作成ファイルから本来の目的とするファイルへと copy and pasteしなおすようにしたらよいのです。 第一のステップで文字コードが乱れる結果になっても、 小さなファイルだと修復の手間も小さくなります。

あるいは、 pasteする直前にsaveしてバックアップを作り、 結果が読めなくなったら、 そのときにはじめて2ステップ法を使うほうが面倒が少ないかもしれません。

もしも、運悪く、文字コードが判別不能になってしまい、 しかもバックアップファイルから再び作り直すというやり方には何か支障のある場合には、 壊れた大きなファイルを修復するためには、多大な手間暇をかけることになります。 だから予防的対策をとるべきだと思います。

[補注C]

私の場合は、、C:\Windows の直下に置きました。 ただし「C:\Windowsの中身を素人が勝手に増やすのは避けるのが賢明だった」 と後になって悟るという展開も想定されるので、 どのファイルを加えたかを忘れないように、 そのパソコンの整備記録ノート(ファイル)を定めて、 そのなかにそのことを記してあります。

[補注D]

余談ですが、 私は今まで何年間もこの「cygwinでmakeする」という方法しか念頭になかったので、 学生から文字コードの変換方法を聞かれたときに、 cygwinのinstallから教えていては時間がかかり過ぎると思い、 学生にはinstallさせずに、私が(あまりフレンドリーではない) ファイル変換サービス係になるという方針でやってきました。 しかし、これからは、 この文書を参考にして自分自身で変換しなさいと言えるようになりました。

[補注E]

私自身は試したことがありませんが、若くて気力のあるうちは何でも試してみるのは良いことだと思います。

参考URLリスト

[文献1] Windows TIPS:nkfツールで文字コードを変換する (2013年1月 @IT記事)


To Page Top