今回の記事は、Windowsで使用するコマンドプロンプトの文字コードについてです。
文字コードとは
さて、本題に入る前にそもそも文字コードとは何かを簡単に確認していきます。
文字コードとは、コンピュータ上で文字を表すために使うコードのことです。
文字コードは、有名なところではShift_JISやUTF-8などがあります。
それぞれの文字コードでは、ある文字に割り当てられている文字の番号が異なっています。たとえば、Shift_JISの”あ”とUTF-8の”あ”ではコンピュータでは別のコード番号が割り当てられています。
そのため、ある文書がShift_JISで書かれている場合、それを誤ってUTF-8としてその文書を読み込むと文字化けが発生してしまいます。
通常であれば、文書自体(HTML)に文字コードが明示的に記載されていたり、有名なテキストエディタでは文字コードの推測を正しく行ってくれたりするので、表示するアプリケーションが文字コードを誤判定することはそんなにないと思います。
簡単に文字コードについて、確認していきました。文字コードはプログラミングなどに携わっている場合には避けては通れないと思うので、今度一つの記事としてまとめていきたいなぁと思っています。一度理解すれば、問題ないのかもしれませんが意外と難しい話題だと思います。
Windowsコマンドプロンプトで文字化けを確認
では、本題に進みたいと思います。Windowsコマンドプロンプトで文字コードを扱うことについてです。最近、あの有名なコードエディタのVisual Studio Code(以後、VS Code)を使っていて、VS Codeでテキストを新規作成すると文字コードがUTF-8なんですよね。そこで、コマンドプロンプトでそのテキストを開いて確認してみたら文字化けしてしまいました。
Windowコマンドプロンプトの文字コードを確認
上記のように、コマンドプロンプト上で文字化けしてしまいました。テキストファイルの文字コードは、UTF-8なので文字化けするということはコマンドプロンプトの表示している部分は別の文字コードなのでしょうか?確認してみましょう。
確認方法は、開いているコマンドプロンプトのタブあたりをカーソルで合わして右クリックするとコンテキストメニューが表示されるのでプロパティを選択します。すると以下のようなメニュー画面が開きます。
メニュー下部に「現在のコードページ」と記載されていると思いますがこれがコマンドプロンプトの文字コードです。932(ANSI/OEM - 日本語 Shift-JIS)と記載されている通り、UTF-8ではありません。そのため、コマンドプロンプトは文字コード"932"で解釈しますが、そのテキストは文字コード"UTF-8"なのでそれぞれ別の文字コードのため文字化けしているということですね。
さて、このようにGUI(グラフィカルユーザーインタフェース)でも確認可能ですが文字コードを確認するためのコマンドが用意されています。
「chcp」コマンドです。これを引数なしで実行することで、現在のコマンドプロンプトの文字コードが簡単にわかります。慣れればこちらの方が簡単ですね!
Windowsコマンドプロンプトで文字コードを変更する
今までの確認でなぜ文字化けしていたかまで分かりました。それでは、文字化けしないように今回はコマンドプロンプトの文字コードをテキストファイルの文字コードと同じUTF-8に合わせてみましょう!
実は文字コードを変更するには、文字コードを確認するコマンドを使えば良いのです。さきほどは「chcp」だけ入力していましたが実はこのコマンドの引数に変更したい文字コードを指定することでその文字コードへ変更ができるのです!では、文字コードをUTF-8に変更してみましょう。
指定する文字コードの番号は予め決まっています。Microsoftの公式ページに記載されいるので変更したい文字コードは以下のページで確認しましょう。
UTF-8は"65001"となりますね。
コードページ識別子 - Win32 apps | Microsoft Docs
上記コマンドを実行すると、コマンドプロンプトが再描画されます。再度「chcp」コマンドを実行すると変更したUTF-8のコード番号が表示されました。
文字化けが解消されたか確認する
それでは、文字化けが解消されたか確認してみましょう。再度同じように先ほどのテキストファイルをコマンドプロンプトで開いてみましょう。
今度は文字化けせずに正常に文字を確認できました!
おわりに
今回はWindowsコマンドプロンプトで文字コードを扱いました。普段何気ない作業で突然文字化けが発生して慌てないように、文字コードの仕組みというかコンピュータが文字を表示している仕組みを理解しておきたいですね。
しかし、コマンドプロンプトのようなWindowsのアプリケーションはやはりデフォルトでは文字コードとしてShift_JISが多いようですが、UTF-8にならないものですかね。ただ、メモ帳はデフォルトで文字コードUTF-8になったので、そのように仕向ける気はあるようにも感じますね。
まぁ色々とこうなった歴史はあるのでしょうけど。まぁ、逆に文字コードの良い勉強になったりするのでいいのかもしれませんが笑
今回も最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。