Windowsで 日本語文字コードの種類の判別や変換を行う定番の方法は nkf という フリーのアプリケーション・ソフトウエアを利用することです。 この文書では Windowsで nkf を利用するための手順をまとめました。
参考URLリストの記事[文献1]がよい参考になりました。
このテキスト・ファイルは使用方法の説明書です。
参考情報:このテキストファイルの文字コードはShift-JIS,行末記号はCR+LFです。
このバイナリー・ファイルは「コマンド行」で実行するアプリケーション・ソフトウエアです。
Windowsの環境変数「Path」に含まれるフォルダーに nkf32.exeをコピーしておくと使い易いです。使用方法の例は後述します。
上記の2つ以外のファイルはさしあたり使用することはないと私には思われますが、 念のため説明しておきます。
このバイナリー・ファイルは、「ファイル名を指定して実行」 [補注A] 窓から実行するアプリケーション・ソフトウエアです。
使用説明書nkf.txtの記載を読んで試してみたところ私にも使えましたが、 使い勝手が悪く、今後使うことはないだろうと思いました。
「nkf*.exe はnkf32.dllを必要としない」ことは私自らも試して確認できました。
nkfの機能を利用する アプリケーション・ソフトウエア群が別途開発されており、 それらはnkf32.dllを必要とするらしい、と説明書を読んで理解しました。
nkf.exe・nkfwin.exeとnkf32.exe・nkfwin32.exeとの違いは、 変換後の文字コードが、defaultでは(無指定時には)、 前者がJISコードであるのに対し、後者が Shift-JISコードであるということの1点だけであると、 説明書を読んで理解しました。
何らかのテキストファイルa.txtの入ったフォルダーに、nkf32.exeがコピーして あるという状況で、a.txtの文字コードを調べるには、下記のようにします。 3通りのいずれの場合でも、結果は下記の一行で表示されます。
Shift_JIS(CRLF)
nkf32 -g a.txt
コマンド行引数の「-g」は「--guess」と書くこともできます。 [補注B]
なお、nkf32.exeがWindowsの実行可能ファイル検索パスに含まれたfolderに置いてあれば、 現在作業中のフォルダーがどこであっても実行できます。
パスは、Windows Command Promptで、 「 echo %path% 」 とすれば表示されます。
そのパスから選んだ1つのフォルダー [補注C]の直下に置けば目的は達せられます。
.\nkf32 -g a.txt
./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が使えます。
nkf -w a.txt > b.txt
nkf -w8 a.txt > b.txt
nkf -s a.txt > b.txt
nkf -j a.txt > b.txt
nkf -e a.txt > b.txt
Windows用バイナリーはcygwinからも実行できますが、 それでは何らかの不都合が発生した場合 (例えば、もしも再び、Windows用バイナリーが提供されなくなったり、 改訂が必要なのに改訂されずに放置されるようになった場合)は、 自分でmakeする必要があります。[補注D]
方法は、「nkf cygwin make」で検索してみて下さい。 あるいは、 nkf-2.1.3.tar.gz に同梱の説明文書だけでもわかる人もいるでしょう。
linuxでは、多くのdistributionにnkfがパッケージとして含まれています。 例えばFedora20では、
yum install nkf
でインストールできます。
(別項で述べる予定の)virtualBox上にLinuxをinstallし、 そのLinuxにnkfをinstallし、そのnkfを使って、 共有フォルダー (Linuxからもアクセスできるように設定したWindowsファイルシステムのフォルダー) に置いたtext fileの文字コードを調べたり変換したりすることができるのです。
参考URLリストの[文献1]に、 windows power shellで、power shellスクリプトを書けば、 文字コード変換のためのWindows APIを利用できると書いてあります。 [補注E]
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]私自身は試したことがありませんが、若くて気力のあるうちは何でも試してみるのは良いことだと思います。
[文献1] Windows TIPS:nkfツールで文字コードを変換する (2013年1月 @IT記事)