VSTS 雲到地的 CI CD (09) - 使用中文替換 Web.config 內的值

有些討厭的需求就是會誕生出來

比如 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 呈現正確的中文字了

相關連結

POWERSHELL 常見問題 (繁體中文)

Open, Write and Close the file using Powershell

適用於 FileSystem 的 Set-Content