Windows 10 PoserShell 中文亂碼處理

假如我有一個腳本是將複製的字串前面加上今日日期 “20211104_我複製的字串”

$DateNow = Get-Date -Format "yyyyMMdd"
$CopyString = Get-Clipboard

-join($DateNow, "_", $CopyString)  | Clip

英文時沒問題,但有中文時就會發現字串裡多了一堆問號

PowerShell 確認 [console]::OutputEncoding[console]::InputEncoding$OutputEncoding 這些變數

可以發現編碼都是Big5

只要在腳本前加上下列字串即可修改編碼為 UTF-8

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [Text.UTF8Encoding]::UTF8

完整腳本如下

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [Text.UTF8Encoding]::UTF8

$DateNow = Get-Date -Format "yyyyMMdd"
$CopyString = Get-Clipboard

-join($DateNow, "_", $CopyString)  | Clip

如果要讓所有腳本都以 UTF-8 執行

PowerShell 確認 $PROFILE 變數路徑,應該會在

C:\Users\UserName\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

在 C:\Users\UserName\Documents\WindowsPowerShell 下新增Microsoft.PowerShell_profile.ps1 內容如下

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [Text.UTF8Encoding]::UTF8

參考來源

發佈留言