PowerShell 模組亂碼解法

在 Windows 作業系統使用 EMILY.RPA PowerShell 模組時
常常有使用者遇到「中文程式碼變成亂碼」的問題
或是「讀取 UTF-8 編碼文字檔,會變成亂碼」等問題

以下設定分享給各位參考

1. 確認 PowerShell 當前編碼

右鍵 > 以系統管理員身分執行 PowerShell

打開 Windows PowerShell

於 PowerShell 視窗內輸入以下程式碼確認

[console]::OutputEncoding
[console]::InputEncoding

正常來說,沒有做任何設定的話,編碼會是 big5
我們要把他調整成 UTF8
這樣 EMILY.RPA 呼叫 PowerShell 模組執行程式碼時,才不會有中文變成亂碼的問題

2. 確認 $PROFILE 變數

接下來我們要讓 系統在執行 PowerShell 程式碼之前
都先執行一次編碼轉換的程式

我們先在 PowerShell 視窗中輸入以下程式碼

$PROFILE

image

這時候會有一個路徑跑出來
這個路徑上的檔案就是 PowerShell 在執行時,都會先去執行這個路徑上的 .ps1 檔案

3. 新增 Microsoft.PowerShell_profile.ps1 檔案至 步驟2 路徑

我們可以打開 PowerShell ISE
來撰寫 ps1 檔案


程式碼如下 :

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

接著 另存新檔 到 步驟2 路徑

注意! 檔名要跟路徑上面的一樣

4. 在 PowerShell 中更改 EXECUTIONPOLICY

注意! 是在以系統管理原身分執行的 PowerShell 中,非 PowerShell ISE

注意! 是在以系統管理原身分執行的 PowerShell 中,非 PowerShell ISE

注意! 是在以系統管理原身分執行的 PowerShell 中,非 PowerShell ISE

輸入以下程式碼

set-executionpolicy remotesigned

接著輸入 Y,按下 ENTER

到這邊,就全部設定完成了

接下來就可以前往 EMILY.RPA PowerShell 模組測試看看含有中文的程式碼
以及讀寫文字檔等等的功能

看看還有沒有中文變成亂碼的問題出現

參考文章1 : LINK
參考文章2 : LINK

1 Like