Windows OSのコマンドプロンプト上でテキスト処理をする場合、基本的にはShift-JIS(シフトJIS)コードのテキストファイルしか扱えない。その他の文字コードのテキストを扱う場合は、Shift-JISに変換する必要がある。「メモ帳」アプリやnkfコマンドなどで文字コードを変換する方法を解説する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
対象:Windows 10/11
文書ファイルを開いたら文字化けして読めなかったり、CSVファイルをExcelに読み込んだら日本語部分が変な記号になっていたりした経験はないだろうか。これらは、文字コードが異なっているのが原因であるケースが多い。
日本語版Windows OSでは、長らくShift-JIS(シフトJIS)がデフォルトの文字コードとして使われてきた。そのため、アプリケーションの多くが、日本語の文字コードとしてShift-JISを前提として作られている。
ただ、最近では「メモ帳」アプリやLinux用Windowsサブシステム(WSL)などのように、多言語が扱えるUTF-8をデフォルトとしているアプリやシステムが増えている。そのため、作成するアプリケーションによって、扱える文字コードが異なる場合があり、場合によって文字コードの変換が必要になる。
そこで、本Tech TIPSではWindows 10/11で文字コードを変換する方法を紹介する。
ファイルの文字コードを変換する最も簡単な方法は、「メモ帳」アプリを使う方法だろう(Tech TIPS「【Windows 10】キミは『メモ帳』アプリの実力を知らない?」も参照してほしい)。
まず、「メモ帳」アプリを起動し、[ファイル]−[開く]を選択して、変換したいテキストファイルを開く。次に[ファイル]−[名前を付けて保存]を選択して、[名前を付けて保存]ダイアログで、「文字コード」のプルダウンリストで変換先の文字コードを選択して、[保存]ボタンで保存すればよい。
例えば、各種記事などで紹介されているレジストリファイル(.regファイル)を作成する場合、「メモ帳」アプリで入力して、単純に保存してしまうと、文字コードは「UTF-8」になってしまう。しかし、レジストリファイルは「UTF-16LE」で保存する必要があるので、保存する際に[名前を付けて保存]ダイアログの「文字コード」のプルダウンリストで「UTF-16LE」を選択しなければならない。
また、Shift-JISのテキストファイルを、Linux用Windowsサブシステム(WSL)で処理したい場合も、事前にUTF-8に変換しておく必要がある。このような場合は、「メモ帳」アプリでテキストファイルを開いた後、[名前を付けて保存]ダイアログの「文字コード」のプルダウンリストで「UTF-8」を選択して、[保存]ボタンで保存すればよい。
「メモ帳」アプリやIEを使って文字コードを変換するのは手軽だが、変換したいファイルの数が多かったり、作業を自動化したりするのには不向きだ。
このような場合、文字コードを変換するコマンド「nkf(Network Kanji Filter)」を使うとよい。ただ、nkfコマンドは、Windows OSの標準コマンドではない。そのため、フリーソフトウェアとして配布されているものを使うか、WSL 1/WSL 2上のLinuxディストリビューションのnkfコマンドを使う必要がある。
オリジナルのnkfコマンドは、OSDNの「nkf Network Kanji Filter」でソースコードが公開されているが、Windows 10上で実行するにはコンパイルなどの作業が必要になり、ハードルが高い。
そこで、Windows OS向けの実行ファイルとして提供されている「nkf.exe nkf32.dll Windows用」を利用するとよい。
以下のWebページをWebブラウザで開き、[ダウンロードページへ]ボタンをクリックし、開いたページで[このソフトを今すぐダウンロード]ボタンをクリックして、「nkfwin.zip」をダウンロードする。
nkfwin.zipの中には、dllファイルやexeファイルが複数含まれているが、[vc2005]−[win32(98,Me,NT,2000,XP,Vista,7)Windows-31J]フォルダにある「nkf32.exe」を使うとよい。「nkf32.exe」は、オプション指定なしでは、Shift-JISコードに変換してくれる。この「nkf32.exe」をパスの通ったフォルダにコピーし、「nkf.exe」にファイル名を変更しておく。
nkfコマンドは、<入力ファイル>の文字コードを自動判別し、<オプション>で指定された文字コードに変換するという単純なものだ。詳細は、Tech TIPS「nkfツールで文字コードを変換する(Windows編)」を参照してほしい。
nkf <オプション> <入力ファイル>
nkf <オプション> <入力ファイル> > <出力ファイル>
Shift-JIS以外の文字コードに変換して出力するには、以下のようなオプションを指定すればよい。
オプション | 文字コード |
---|---|
-j | JISコード |
-e | EUCコード |
-s | Shift-JISコード |
-w | UTF-8(BOMなし) |
-w8 | UTF-8(BOMあり) |
-w16 | UTF-16(ビッグエンディアン。BOMあり)。メモ帳の「Unicode big endian」はこのタイプ |
-w16L | UTF-16(リトルエンディアン。BOMあり) |
WSLがインストールされているのであれば、WSL上のLinuxディストリビューションでnkfコマンドを実行するという方法もある。
まずLinuxディストリビューションを起動し、以下のコマンドを実行してnkfコマンドをインストールする(以下はUbuntuの例。他のディストリビューションでは、aptの代わりにyumやdnfなど所定のパッケージ管理ツールを使っていただきたい)。
sudo apt-get install nkf
あとはLinuxディストリビューションのbash上で、前述の「nkf32.exe」と同様にコマンドを実行すればよい。ただし、Windows 10/11上のテキストファイルを変換する場合、パスなどの指定が面倒なので、コマンドプロンプトまたはPowerShell上で「wsl nkf」として実行すればよい(WSL上でのパスの扱いについては、ITの教室「【WSL入門】第3回 WSL活用の落とし穴:LinuxからWindowsフォルダへのアクセス完全マスター」参照のこと)。
wsl nkf <オプション> <入力ファイル>
頻繁に文字コードの変換を行う必要があるのならば、フリーソフトウェアの文字変換ツールをインストールしておくと便利だ。この手のツールは幾つかあるが、ここではnkfコマンドをGUI化したNyuki氏の「FileCode Checker」を取り上げておく。
FileCode Checker(FCChecker)は、ダウンロードサイトからZIPファイルをダウンロードし、展開するだけで利用可能だ(インストールは不要)。展開したフォルダ内の「FCChecker.exe」を実行すれば、ツールが起動する。
ツール上に変換したいファイルをドロップし、変換後の文字コードや改行コード(改行コードは変更しない場合は指定しなくてもよい)を指定し、保存先を指定、[変換]ボタンをクリックすると、指定した保存先に文字コードを変換したファイルが保存できる。
【2023/09/08】Internet Explorer(IE)のサポート終了に伴い、IEを利用した文字コードの変換方法の記述を削除しました。また、フリーソフトウェア「FileCode Checker」を利用する方法を追記しました。
【2020/09/11】初版公開。
Copyright© Digital Advantage Corp. All Rights Reserved.