Windows PowerShell のデフォルトの文字コードはshift_jis
です。
shift_jis
だと日本語が文字化けします。
UTF-8
だと日本語で文字化けしません。
ということで、PowerShell の文字コードをUTF-8
にする方法を解説します。
PowerShell で文字コードをUTF-8に変更する
① 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_jis
で932
です。
文字コードを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 名 | 関連情報 |
---|---|---|
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 コード ページ識別子
- https://docs.microsoft.com/ja-jp/windows/win32/intl/code-page-identifiers
shift_jis
が日本語で文字化けする理由
文字 | 表 | 示 | ||
shift_jisコード | 95 | 5C | 8E | A6 |
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コード | 95 | 8E | A6 |
最終的な表示として、文字コード「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 文字コード
コマンドで文字コードを変更できます。
コメント