
M1・M2 Macで起動するParallels「Windows11」仮想環境
Windows コマンドプロンプト(cmd)のデフォルトの文字コードは***shift_jis***です。
***shift_jis***を使っていると日本語の文字化けで100%困ります。
現在、ほとんどのアプリで***UTF-8***が使われているからです。
ということで、文字化け対策のために、コマンドプロンプト(cmd)の文字コードを***UTF-8***に変更したくなるわけです。
最初からコマンドプロンプト(cmd)が***UTF-8***だったら良いんですが、、、何か理由があるのかも知れませんが、、、。
ちなみにPowerShellも同じくデフォルトの文字コードは***shift_jisです。なので、この記事で紹介するchcpコマンド***はPowerShellにも使えます。
Windows PowerShell 文字化け解消!文字コード【UTF-8】に!
コマンドプロンプト(cmd)を起動する

Windows 11 でコマンドプロンプトを起動する
Windows 11でコマンドプロンプト(cmd)を起動しましょう。
検索欄から**“cmd”**と入力すればコマンドプロンプト(cmd)が表示されます。
そのまま**“Enter”**を押せば、コマンドプロンプト(cmd)が起動します。
コマンドプロンプトの文字コードを確認する
C:\Users\ユーザー名> chcp
現在のコード ページ: 932
C:\Users\ユーザー名>
コマンドプロンプト(cmd)上で***chcp***コマンドを打てば、現在の文字コードの設定を確認できます。
***932なので文字コードはshift_jis***です。
***shift_jisをUTF-8***で開いたりすると日本語が文字化けします。
なので、文字コードを***UTF-8***します。
shift_jisが文字化けする理由
***shift_jis***で「表示」という文字を、CGIスクリプト中に記述して出力すると「侮ヲ」と文字化けします。
***shift_jisでは、日本語は1文字当り2バイトで表現されます。shift_jis***の「表示」という文字コードは下記で表現されます。
| 文字 | 表 | 示 | ||
| shift_jisコード | 95 | 5C | 8E | A6 |
しかし、「表」の2バイト目の「5C」は、メタ文字(特殊文字)の「¥」の文字コードと重複します(shift_jisの場合)。 「¥」が文字列中にあると、コンピュータはこれをエスケープ記号として解釈し、次のように表示します。
- (1) 95 5C 8E A6 … 記述時点
- (2) 95 5C 8E A6 … 「5C」を「¥」と解釈し取り去る(その次の8Eをエスケープすると解釈)
- (3) 95 8E A6 A6 … 展開結果
| 文字 | 侮 | ヲ (半角) | ||
| shift_jisコード | 95 | 8E | A6 | |
最終的な表示として、文字コード**「95 8E A6」**の展開結果は上になります。
コマンドプロンプトの文字コードをUTF-8に変更する
C:\Users\ユーザー名> chcp 65001
***chcp 文字コード***で、コマンドプロンプトの文字コードを変更できます。
UTF-8の文字コードは***65001***です。
なので***chcp 65001***で文字コードがUTF-8になります。
Active code page: 65001
C:\Users\ユーザー名>
***chcp 65001コマンドを打つとActive code page: 65001***と表示され画面が切り替わります(再読み込みされます。)。
これで文字コードが***UTF-8***になりました。
UTF-8が使われる理由
UTF-8(Unicode)がよく使われる理由は、ASCIIとの互換があるからです。
大半がUnicodeとは言っても英語圏では、まだまだASCIIが使われています。UTF-8(Unicode)は、そのASCIIと互換性があるというのが大きな利点です。
またUTF-8にはエンディアンの問題もありません。
これがUTF-8が使われている理由です。
文字コード表
| 識別子 | .NET 名 | 関連情報 |
|---|---|---|
| 932 | shift_jis | ANSI/OEM 日本語; |
| 日本語(Shift-JIS) | ||
| 20127 | us-ascii | US-ASCII(7ビット) |
| 65001 | utf-8 | Unicode(UTF-8) |
shift_jis:932、UTF-8:65001などの文字コードの設定値は、当たり前ですがMicrosoftが決めています。
UTF-8以外にする人はいないと思いますが、、、
Microsoftの公式ページに文字コード表があるので、他の文字コードにしたい方は参考になるかと思います。
- Microsoft コード ページ識別子
PowerShell もchcpコマンドが使える
PowerShell 7.2.6
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
PS C:\Windows\System32> chcp
現在のコード ページ: 932
PS C:\Windows\System32>
PowerShell もデフォルトの文字コードは***shift_jis***です。
PowerShell も同じく***chcp 文字コード***コマンドで文字コードを変更できます。