有些討厭的需求就是會誕生出來
比如 Web.config 內有些值是中文
承 VSTS 雲到地的 CI CD (02) - 佈署依據環境替換 Web.config 此篇
替換過後就變成中文亂碼, 已經很久沒處理過亂碼的狀況
幸好最後還是順利處理掉了
狀況敘述
首先在 Release 中的 Environment Variables 中設定欲替換的中文字
佈署之後去看看結果有無順利寫進 Web.config
在替換中文後值就變成亂碼了
解決方式
由於先前寫的 Replace-SetParameters.ps1 是把 SetParameters.xml 的值整份取代掉
Set-Content 預設檔案編碼方式是 ASCII
要支持中文的話我們改為 UTF8 編碼 -Encoding UTF8
如果想要在 VSTS 的 Logs 印出改完後的 File 可以再加入以下這段 Get-Content -Path $setParamsFilePath
按下執行 Release 即可大功告成
後記
在 VSTS 的 Logs 查看應該還是會是亂碼的
因為執行 PowerShell 還是在地端的 Agent Server
所以如果想要順利看到中文的話必須去調整該台 Server 的語言中的系統地區設定與預設輸入法
把它調整為 "中文 (繁體台灣)" 就能夠順利看到 Logs 呈現正確的中文字了