ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

Windowのコマンドプロンプトで文字コードを扱う

今回の記事は、Windowsで使用するコマンドプロンプト文字コードについてです。

文字コードとは

さて、本題に入る前にそもそも文字コードとは何かを簡単に確認していきます。

文字コードとは、コンピュータ上で文字を表すために使うコードのことです。
文字コードは、有名なところではShift_JISUTF-8などがあります。
それぞれの文字コードでは、ある文字に割り当てられている文字の番号が異なっています。たとえば、Shift_JISの”あ”とUTF-8の”あ”ではコンピュータでは別のコード番号が割り当てられています。
そのため、ある文書がShift_JISで書かれている場合、それを誤ってUTF-8としてその文書を読み込むと文字化けが発生してしまいます。
通常であれば、文書自体(HTML)に文字コードが明示的に記載されていたり、有名なテキストエディタでは文字コードの推測を正しく行ってくれたりするので、表示するアプリケーションが文字コードを誤判定することはそんなにないと思います。

簡単に文字コードについて、確認していきました。文字コードはプログラミングなどに携わっている場合には避けては通れないと思うので、今度一つの記事としてまとめていきたいなぁと思っています。一度理解すれば、問題ないのかもしれませんが意外と難しい話題だと思います。

Windowsコマンドプロンプトで文字化けを確認

では、本題に進みたいと思います。Windowsコマンドプロンプト文字コードを扱うことについてです。最近、あの有名なコードエディタのVisual Studio Code(以後、VS Code)を使っていて、VS Codeでテキストを新規作成すると文字コードUTF-8なんですよね。そこで、コマンドプロンプトでそのテキストを開いて確認してみたら文字化けしてしまいました。

f:id:mr_star:20200829143654p:plain
コマンドプロンプトで文字化けを確認①
f:id:mr_star:20200829151214p:plain
コマンドプロンプトで文字化けを確認②

Windowコマンドプロンプト文字コードを確認

上記のように、コマンドプロンプト上で文字化けしてしまいました。テキストファイルの文字コードは、UTF-8なので文字化けするということはコマンドプロンプトの表示している部分は別の文字コードなのでしょうか?確認してみましょう。
確認方法は、開いているコマンドプロンプトのタブあたりをカーソルで合わして右クリックするとコンテキストメニューが表示されるのでプロパティを選択します。すると以下のようなメニュー画面が開きます。

f:id:mr_star:20200829144216p:plain
コマンドプロンプト文字コードを確認①

メニュー下部に「現在のコードページ」と記載されていると思いますがこれがコマンドプロンプト文字コードです。932(ANSI/OEM - 日本語 Shift-JIS)と記載されている通り、UTF-8ではありません。そのため、コマンドプロンプト文字コード"932"で解釈しますが、そのテキストは文字コード"UTF-8"なのでそれぞれ別の文字コードのため文字化けしているということですね。

さて、このようにGUI(グラフィカルユーザーインタフェース)でも確認可能ですが文字コードを確認するためのコマンドが用意されています。
「chcp」コマンドです。これを引数なしで実行することで、現在のコマンドプロンプト文字コードが簡単にわかります。慣れればこちらの方が簡単ですね!

f:id:mr_star:20200829145014p:plain
コマンドプロンプト文字コードを確認②

Windowsコマンドプロンプト文字コードを変更する

今までの確認でなぜ文字化けしていたかまで分かりました。それでは、文字化けしないように今回はコマンドプロンプト文字コードをテキストファイルの文字コードと同じUTF-8に合わせてみましょう!

実は文字コードを変更するには、文字コードを確認するコマンドを使えば良いのです。さきほどは「chcp」だけ入力していましたが実はこのコマンドの引数に変更したい文字コードを指定することでその文字コードへ変更ができるのです!では、文字コードUTF-8に変更してみましょう。

指定する文字コードの番号は予め決まっています。Microsoftの公式ページに記載されいるので変更したい文字コードは以下のページで確認しましょう。
UTF-8は"65001"となりますね。
コードページ識別子 - Win32 apps | Microsoft Docs

f:id:mr_star:20200829150137p:plain
コマンドプロンプト文字コードを変更

上記コマンドを実行すると、コマンドプロンプトが再描画されます。再度「chcp」コマンドを実行すると変更したUTF-8のコード番号が表示されました。

f:id:mr_star:20200829145923p:plain
コマンドプロンプト文字コードを確認③

文字化けが解消されたか確認する

それでは、文字化けが解消されたか確認してみましょう。再度同じように先ほどのテキストファイルをコマンドプロンプトで開いてみましょう。

f:id:mr_star:20200829151100p:plain
コマンドプロンプトでテキストファイルを開く

今度は文字化けせずに正常に文字を確認できました!

おわりに

今回はWindowsコマンドプロンプト文字コードを扱いました。普段何気ない作業で突然文字化けが発生して慌てないように、文字コードの仕組みというかコンピュータが文字を表示している仕組みを理解しておきたいですね。
しかし、コマンドプロンプトのようなWindowsのアプリケーションはやはりデフォルトでは文字コードとしてShift_JISが多いようですが、UTF-8にならないものですかね。ただ、メモ帳はデフォルトで文字コードUTF-8になったので、そのように仕向ける気はあるようにも感じますね。
まぁ色々とこうなった歴史はあるのでしょうけど。まぁ、逆に文字コードの良い勉強になったりするのでいいのかもしれませんが笑
今回も最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。