windows powershellの文字コードをUTF-8にする
環境:Windows PowerShell 5.1
powershellの文字コードは、標準ではshift JISになっている。
chcpコマンドを使えばUTF-8にできるが、chcp 65001では毎回入力しないといけないため、非常に面倒。
を参考に、
$PROFILEに文字コードをUTF-8にするスクリプトを入力してみる。
code:a.bash
# PROFILEが存在するか確認
Test-Path $PROFILE
# PROFILEを作成
New-Item -ItemType File -Path $PROFILE -Force | Out-Null
# 好みのエディタで開く
notepad $PROFILE
# 以下を記述する
$OutputEncoding = console::InputEncoding = console::OutputEncoding = New-Object System.Text.UTF8Encoding # 更新
. $PROFILE
起動すると、以下の表示が。
code:起動
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\to\WindowsPowerShell\Microso
.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . 'C:\Users\to\WindowsPowerShell\Microsoft.PowerShell_pr ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
セキュリティの設定を変えないとファイルは実行されませんとのこと。
セキュリティの設定を変えるのはいやなので別の策を考える。
設定を変えた。
code:a.shell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
どうやら、Windows PowerShell 5.1は開発が終了しており、未来永劫文字コードはshift JISだが、最新版のWindows PowerShell 5.1では文字コードがUTF-8らしい?
注意点として、Windows PowerShell 5.1は.NET Frameworkが使われていて、Windows PowerShell 7は.NET Coreが使われているため、一部動作が異なるようです。
PowerShell 7を導入してみたけど、うまいこといかなかったんですが…
これをしたら、VScode以外ならうまく動作するように。
VScodeのターミナルもそこそこ使うので、やっぱり$PROFILEを記述する方法で行くことにします。
Remove-Item -Path $PROFILE