すたらブログ

文系Webプログラマの備忘録

Windows7: コマンドプロンプトの文字コードをUTF-8にする

(最終更新: 2015-10-26)

目次


要望

たとえば、下記のようなUTF-8のテキストファイルをコマンドプロンプトで表示すると文字化けしてしまいます。

test.txt (文字コード: UTF-8)

abcdあいうえお

また、コマンドプロンプトBerkshelfを使ってレシピを取り寄せようとしたら、Encoding::InvalidByteSequenceErrorが発生しました。
原因を調べたところ、コマンドプロンプト文字コードのせいだと判明しました。

そんなわけで、コマンドプロンプト文字コードUTF-8に変更し、なおかつ日本語も表示されるように設定します。
ただし、日本語の入力はできなくなります
UTF-8用のショートカットを作成すればデフォルトのデフォルトのShift-JISのものと共存できるので、使い分ければいいと思います。

なお、これから紹介する手順は下記の記事のものをほぼそのまま流用しています。


コマンドプロンプト用のフォントにMyricaを追加する

下記からMyrica.ttcをダウンロードしてPCにインストールしてください。

コマンドプロンプトで使うためにレジストリに登録します。

  1. レジストリエディター(regedit.exe)を開く。
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFontを表示する。
  3. 画像のように932.(数値)の名前で文字列値のMyrica Mを追加する。


コマンドプロンプトのショートカットを作り、リンク先を変更する

コマンドプロンプトのショートカットは新たに作成するか、既存のものを使います。
そして、リンク先%windir%\system32\cmd.exe /c start "UTF-8 日本語入力不可" cmdに変更します。

私は作業フォルダーも変更しました。
(%HOMEDRIVE%%HOMEPATH%\Dropbox)


コマンドプロンプトをショートカットから開き、文字コードを変更する

ショートカットから開くと、ウィンドウのタイトルがUTF-8 日本語入力不可になっています。
chcp 65001と入力・実行して文字コードUTF-8に変更します。


フォント関連の設定をすべて変更する

プロパティを開き、下記の3つの項目を必ずすべて変更します。

  1. フォントの種類はConsolasまたはLucida Consoleを選ぶ。
  2. フォントのサイズを別の値に変える。
  3. ボールド フォントにチェックを入れる。


レジストリエディターで確認する

コマンドプロンプトは開いたままで、レジストリエディターを開きます。 HKEY_CURRENT_USER\Consoleの下にUTF-8 日本語入力不可というキーが作成され、下記の4つの項目が作成されていることを確認します。

  • CodePage
  • FaceName
  • FontSize
  • FontWeight

確認したらレジストリエディターを閉じます。


フォントの種類以外を最終形にする

再びコマンドプロンプトのプロパティを開きます。

  • ボールドフォントのチェックを外す。
  • フォントのサイズを実際に使いたいサイズに変更する。 (すでにそうなっている場合は変更の必要はない)

FaceNameをMyrica Mにする

HKEY_CURRENT_USER\Console\UTF-8 日本語入力不可FaceNameMyrica Mに変更します。

これ以後、プロパティ画面からは設定を一切変更してはいけません。
変更せざるを得なくなった場合は、上の手順をもう一度やり直してください。


結果

初めに挙げたUTF-8のテキストファイルが文字化けせずに表示されるようになりました。

ただし、日本語入力はできません。
デフォルトのShift-JISのものと使い分ければいいと思います。


余談: タスクバーに登録したショートカットのプロパティを変更するには

私は画像のようにタスクバーにコマンドプロンプトのショートカットを置いています。
ここから開いた時にUTF-8の設定を反映させるにはどうすればいいか。

タスクバーのショートカットは下記の場所にあるので、そのプロパティを変更すれば解決です。
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar


もっと簡単な解決策

ConEmuという端末を導入することをお勧めします。
タブで複数の端末を管理できるのも便利です。