⛳
20秒で終わるWindows日本語(utf-8)出力解決
文字化け解決法
コマンドプロンプト・PowerShellにてutf-8であるプログラムの出力が文字化ける際の解決策
コマンドプロンプト
chcp 65001
PowerShell
基本的にはコマンドプロンプトと同じ
chcp 65001
しかし、PowerShellのverによっては上記では解決しないことがある
そのときは次のコマンド
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
一時的な解決については以上
PowerShell プロファイル
上記のコマンドはそれを実行したインスタンスにのみ有効となる。
よって、PowerShellを開くたびに上記のコマンドを実行する必要がある。
それが面倒な場合はPowerShellのプロファイルに上記コマンドを記述することで、PowerShellを開いた際にそれらが自動的に実行される。
プロファイルのパス
$profile
上記コマンドで取得できる
プロファイルの作成
New-Item $profile -force type file
プロファイルの内容の変更
notepad $profile
上記コマンドを実行することでメモ帳が開く。
ここに記述したコマンドが実行時に自動的に適用される。
今回ならば、以下のコマンドを記述して保存する。
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
プロファイルの読み込みエラーが発生する場合
上記のようなエラーが出た場合は、PowerShellにスクリプトを実行する権限が与えられていないため、プロファイルが読み込まれていない。
そのため、PowerShellのスクリプト実行ポリシーを変更する必要がある。
以下はそれを行うための手順である。
1 PowerShellを管理者権限で実行する
2 PowerShellのスクリプト実行ポリシーを変更する
下記コマンドにて実行ポリシーを変更する
Set-ExecutionPolicy RemoteSigned
RemoteSignedについて
RemoteSignedはローカルで作成されたスクリプトの実行を許可するポリシー。
インターネットからダウンロードされたスクリプトの実行には署名が必要となる。
インターネット以外のリソースからの悪意あるスクリプトを実行する可能性がある。
したがって、変更は自己責任で。
詳しくはここ
3 スクリプト実行ポリシーの確認
Get-ExecutionPolicy
上記コマンドで現在の実行ポリシーが確認できる。
RemoteSignedになっていれば、PowerShellを再起動して完了。
参考:
Discussion