【Windows 10/11】えっ、UTF-8じゃなくてShift-JISで? お手軽文字コード変換方法まとめTech TIPS

Windows OSのコマンドプロンプト上でテキスト処理をする場合、基本的にはShift-JIS(シフトJIS)コードのテキストファイルしか扱えない。その他の文字コードのテキストを扱う場合は、Shift-JISに変換する必要がある。「メモ帳」アプリやnkfコマンドなどで文字コードを変換する方法を解説する。

» 2023年09月08日 05時00分 公開
[小林章彦デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

対象:Windows 10/11


文字コードを変換する 文字コードを変換する
Windows 10/11上のコマンドプロンプトやWindowsターミナルは、文字コードとしてShift-JIS(シフトJIS)がデフォルトとなっている。一方、Linux用Windowsサブシステム(WSL)では、UTF-8が一般的だ。このように異なる文字コード間でテキストファイルをやりとりする場合、文字コードの変換が必要になる。その方法を解説しよう。

 文書ファイルを開いたら文字化けして読めなかったり、CSVファイルをExcelに読み込んだら日本語部分が変な記号になっていたりした経験はないだろうか。これらは、文字コードが異なっているのが原因であるケースが多い。

 日本語版Windows OSでは、長らくShift-JIS(シフトJIS)がデフォルトの文字コードとして使われてきた。そのため、アプリケーションの多くが、日本語の文字コードとしてShift-JISを前提として作られている。

 ただ、最近では「メモ帳」アプリやLinux用Windowsサブシステム(WSL)などのように、多言語が扱えるUTF-8をデフォルトとしているアプリやシステムが増えている。そのため、作成するアプリケーションによって、扱える文字コードが異なる場合があり、場合によって文字コードの変換が必要になる。

 そこで、本Tech TIPSではWindows 10/11で文字コードを変換する方法を紹介する。

「メモ帳」アプリで文字コードを変換する

 ファイルの文字コードを変換する最も簡単な方法は、「メモ帳」アプリを使う方法だろう(Tech TIPS「【Windows 10】キミは『メモ帳』アプリの実力を知らない?」も参照してほしい)。

 まず、「メモ帳」アプリを起動し、[ファイル]−[開く]を選択して、変換したいテキストファイルを開く。次に[ファイル]−[名前を付けて保存]を選択して、[名前を付けて保存]ダイアログで、「文字コード」のプルダウンリストで変換先の文字コードを選択して、[保存]ボタンで保存すればよい。

「メモ帳」アプリで文字コードを変換する 「メモ帳」アプリで文字コードを変換する
「メモ帳」アプリのデフォルトはUTF-8なので、「メモ帳」アプリ上で文字を入力するとUTF-8で保存されることになる。しかし、レジストリファイルを作成する場合など、異なる文字コードで保存しなければならないことがある(レジストリファイルは、UTF-16LEで保存する必要がある)。

 例えば、各種記事などで紹介されているレジストリファイル(.regファイル)を作成する場合、「メモ帳」アプリで入力して、単純に保存してしまうと、文字コードは「UTF-8」になってしまう。しかし、レジストリファイルは「UTF-16LE」で保存する必要があるので、保存する際に[名前を付けて保存]ダイアログの「文字コード」のプルダウンリストで「UTF-16LE」を選択しなければならない。

 また、Shift-JISのテキストファイルを、Linux用Windowsサブシステム(WSL)で処理したい場合も、事前にUTF-8に変換しておく必要がある。このような場合は、「メモ帳」アプリでテキストファイルを開いた後、[名前を付けて保存]ダイアログの「文字コード」のプルダウンリストで「UTF-8」を選択して、[保存]ボタンで保存すればよい。

nkfコマンドを使って文字コードを変換する

 「メモ帳」アプリやIEを使って文字コードを変換するのは手軽だが、変換したいファイルの数が多かったり、作業を自動化したりするのには不向きだ。

 このような場合、文字コードを変換するコマンド「nkf(Network Kanji Filter)」を使うとよい。ただ、nkfコマンドは、Windows OSの標準コマンドではない。そのため、フリーソフトウェアとして配布されているものを使うか、WSL 1/WSL 2上のLinuxディストリビューションのnkfコマンドを使う必要がある。

フリーソフトウェアの「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コマンドの書式
<入力ファイル>が、オプションで指定した文字コードに変換され、標準出力に出力される。

nkf <オプション> <入力ファイル> > <出力ファイル>


nkfコマンドの書式(ファイルに保存する場合)
これで文字コードが変換されたテキストファイルが<出力ファイル>に保存される。

nkfコマンドで文字コードを変換する(1) nkfコマンドで文字コードを変換する(1)
Microsoftの「Windows 11のダウンロード」ページを保存したHTMLファイルを、コマンドプロンプトのmoreコマンドで表示させてみた。文字コードがUTF-8のため、HTMLファイル内の日本語が文字化けしている。
nkfコマンドで文字コードを変換する(2) nkfコマンドで文字コードを変換する(2)
Microsoftの「Windows 11のダウンロード」ページを保存したHTMLファイルを、nkfコマンドで文字コードをShift-JISに変換させてみた。上画面と異なり、日本語が正しく表示されている。

 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あり)

nkfの主な文字コード指定オプションこれ以外のオプションについては付属の説明ファイルを参照のこと。BOMとは「Byte Order Mark」の略であり、バイトの並び順を識別するためのデータ(コードでいえばU+FEFF)。ビッグエンディアンとリトルエンディアンはバイトの並び順の種類。

WSLの「nkfコマンド」を使う

 WSLがインストールされているのであれば、WSL上のLinuxディストリビューションでnkfコマンドを実行するという方法もある。

 まずLinuxディストリビューションを起動し、以下のコマンドを実行してnkfコマンドをインストールする(以下はUbuntuの例。他のディストリビューションでは、aptの代わりにyumやdnfなど所定のパッケージ管理ツールを使っていただきたい)。

sudo apt-get install nkf


nkfコマンドをインストールする

nkfコマンドをインストールする nkfコマンドをインストールする
WSL上のLinuxディストリビューション(ここではUbuntu)でパッケージ管理ツールを用いてnkfコマンドをインストールする。

 あとはLinuxディストリビューションのbash上で、前述の「nkf32.exe」と同様にコマンドを実行すればよい。ただし、Windows 10/11上のテキストファイルを変換する場合、パスなどの指定が面倒なので、コマンドプロンプトまたはPowerShell上で「wsl nkf」として実行すればよい(WSL上でのパスの扱いについては、ITの教室「【WSL入門】第3回 WSL活用の落とし穴:LinuxからWindowsフォルダへのアクセス完全マスター」参照のこと)。

wsl nkf <オプション> <入力ファイル>


コマンドプロンプト上でnkfコマンドを実行する
Shift-JISに変換する場合は、「-s」オプションを指定する。

WSL上のnkfコマンドで文字コードを変換する WSL上のnkfコマンドで文字コードを変換する
「wsl nkf」とすることで、コマンドプロンプト上でもWSLのコマンドが実行できる。なお、Shift-JISにする場合は「-s」オプションを付けるのを忘れないこと。

フリーソフトウェアの「FileCode Checker」を使う

 頻繁に文字コードの変換を行う必要があるのならば、フリーソフトウェアの文字変換ツールをインストールしておくと便利だ。この手のツールは幾つかあるが、ここではnkfコマンドをGUI化したNyuki氏の「FileCode Checker」を取り上げておく。

 FileCode Checker(FCChecker)は、ダウンロードサイトからZIPファイルをダウンロードし、展開するだけで利用可能だ(インストールは不要)。展開したフォルダ内の「FCChecker.exe」を実行すれば、ツールが起動する。

 ツール上に変換したいファイルをドロップし、変換後の文字コードや改行コード(改行コードは変更しない場合は指定しなくてもよい)を指定し、保存先を指定、[変換]ボタンをクリックすると、指定した保存先に文字コードを変換したファイルが保存できる。

FileCode Checkerを利用した文字コードの変換(1) FileCode Checkerを利用した文字コードの変換(1)
FileCode Checker(FCChecker)を起動し、文字コードを変換したいファイルをウィンドウにドロップする。変換先の文字コードを選択し、保存先フォルダを指定、[変換]ボタンをクリックする。複数のファイルを同じ文字コードに変換することもできる。
FileCode Checkerを利用した文字コードの変換(2) FileCode Checkerを利用した文字コードの変換(2)
このダイアログで文字コード変換が成功したかどうかの確認ができる。「success」と表示されたファイルは変換に成功している。
FileCode Checkerを利用した文字コードの変換(3) FileCode Checkerを利用した文字コードの変換(3)
文字コードを変換したファイルを「メモ帳」アプリで開いて確認してみた。文字コードがUTF-8に変換されていることが分かる。

更新履歴

【2023/09/08】Internet Explorer(IE)のサポート終了に伴い、IEを利用した文字コードの変換方法の記述を削除しました。また、フリーソフトウェア「FileCode Checker」を利用する方法を追記しました。

【2020/09/11】初版公開。


Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。