假如我有一個腳本是將複製的字串前面加上今日日期 “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