Windows PowerShell 文字化け解消!文字コード【UTF-8】に!

  • URLをコピーしました!
M1・M2 Macで起動するParallels「Windows11」仮想環境
M1・M2 Macで起動するParallels「Windows11」仮想環境

Windows PowerShell のデフォルトの文字コードはshift_jisです。

shift_jisだと日本語が文字化けします。

UTF-8だと日本語で文字化けしません。

ということで、PowerShell の文字コードをUTF-8にする方法を解説します。

目次

PowerShell で文字コードをUTF-8に変更する

① PowerShell を起動する

Windowsで検索欄にPowerShellと入力する
Windowsで検索欄にPowerShellと入力する

Windows の検索欄から"PowerShel"と入力します。そのまま"Enter"を押せば、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 上でchcpコマンドを打てば、現在の文字コードの設定を確認できます。

デフォルトだとshift_jis932です。

文字コードをUTF-8にします。

chcp 文字コードで変更する

PowerShell 7.2.6
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS C:\Windows\System32> chcp 65001

chcp 文字コードで、PowerShell(PS)の文字コードを変更できます。

UTF-8の文字コードは65001です。

なのでchcp 65001で文字コードがUTF-8になります。

Active code page: 65001

PS C:\Windows\System32>

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 名関連情報
932shift_jisANSI/OEM 日本語;
日本語(Shift-JIS)
20127us-asciiUS-ASCII(7ビット)
65001utf-8Unicode(UTF-8)

shift_jis:932、UTF-8:65001などの文字コードの設定値は、当たり前ですがMicrosoftが決めています。

UTF-8以外にする人はいないと思いますが、、、

Microsoftの公式ページに文字コード表があるので、他の文字コードにしたい方は参考になるかと思います。

  • Microsoft コード ページ識別子
    • https://docs.microsoft.com/ja-jp/windows/win32/intl/code-page-identifiers

shift_jisが日本語で文字化けする理由

文字
shift_jisコード955C8EA6

shift_jisで「表示」という文字を、CGIスクリプト中に記述して出力すると「侮ヲ」に文字化けします。

shift_jisでは、日本語は1文字当り2バイトで表現されるからです。shift_jisの「表示」という文字コードは下記で表現されます。

しかし、「表」の2バイト目の「5C」は、メタ文字(特殊文字)の「¥」の文字コードと重複します(shift_jisの場合)。 「¥」が文字列中にあると、コンピュータはこれをエスケープ記号として解釈し、次のように表示します。

  • (1) 95 5C 8E A6 ... 記述時点
  • (2) 95 5C 8E A6 ... 「5C」を「¥」と解釈し取り去る(その次の8Eをエスケープすると解釈)
  • (3) 95 8E A6 A6 ... 展開結果
文字ヲ (半角)
shift_jisコード958EA6

最終的な表示として、文字コード「95 8E A6」の展開結果は上になります。

コマンドプロンプト(cmd)でもchcpコマンドが使える

Microsoft Windows [Version 10.0.22000.856]
(c) Microsoft Corporation. All rights reserved.

C:\Users\ユーザー名> chcp
現在のコード ページ: 932

C:\Users\ユーザー名> 

コマンドプロンプト(cmd)もデフォルトの文字コードはshift_jisです。

コマンドプロンプト(cmd)でも同じくchcp 文字コードコマンドで文字コードを変更できます。

コメント

コメントする

目次