社内SEの話

日々起きたことの記録用

wingetを実行すると文字化けする

↓プログラミングで副業を考えたらこちら↓

winget を使ってChromeをインストールしたときの画面

文字化けの原因

なにか訴えていますが、Yでいいと思いますが、どんな内容か知りたい所

マルチバイト文字だけ化けているので、問題はフォントです。

具体的な原因はまだ解明しきれていませんが、winget の実行中のみフォントが変更されてしまいます。

標準のフォントは MS ゴシック です。

winget install Google.Chrome

を実行してみます。
実行すると文字が化けます。

文字化け中にフォントの確認をすると、Consolas フォントに変わっています。

フォント変更が解消されれば、文字化けは発生しません。

解決方法1 フォントの切り替え

Powershell の枠を右クリックしてプロパティを開き、フォントタブでフォントの選択画面になります。

ここでBIZ UDゴシックなど、明示的に変更します。

フォントを変更すると指定したフォントで表示され、文字化けしません。

コンソールウィンドウを再起動してもフォントが保存されているので、文字化けが再現しません。

Powershell ウィンドウのデフォルトフォントはどういうわけか、winget中に変更がされてしまうようです。

フォントを指定することでフォントを固定させることができます。

解決方法2 Windows Terminalを使う

Powershell のコンソールはSJISであったり、Powershell 5であったりと古くなってきています。

そのためMicrosoft では新しいコンソールとしてWindows Terminalが公開されています。

Storeからインストール

StoreからTerminal と検索すると見つけることができます。

入手をクリック

Wingetからインストール

winget install Microsoft.WindowsTerminal

文字化けしますが、無視してインストールします。

Windows Terminal を起動

起動直後の画面

文字化けしません。

雑感

Windows 標準のPowershell コンソールは古くなっており、新しいコマンドなどに対応できなくなってきています。

wingetなどの比較的新しいモジュールを使う場合は、Windows Terminalをおすすめします。

あと本筋からずれますが、Powershell 7がすでにリリースされているので、合わせてPowerShell 7も推奨しています。