十二月 25 2018

在IIS用URL Rewrite強制變更網頁語言編碼

分類:軟體好硬

APCUPSD 是我除了 Network UPS Tools 另一套很愛用的 UPS 管理軟體,不僅完整提供基本狀況顯示及 Tray Icon,還能作到 Server / Client Agent 的監控方式,也就是用一台主機就能讓其他台僅有電源線接在 UPS 的電腦,於電源異常狀態下自動執行關機,而且同樣跨平台完全免費,連家用級的 APC UPS 都能納入管理控制。只是,如同名字所述,他僅能管控 APC 的不斷電系統。

另外,APCUPSD 還提供了網頁式的狀態監控,所以之前花了一點時間研究,終於成功把他掛入 Windows IIS 中運作。但前陣子將底層的 Windows Server 升級後,卻發現頁面出現了亂碼;與早期使用 Windows Server 2008 R2 / IIS 7.5 時,日期時間顯示為全英文資訊不同。檢查發現,網頁預設為 UTF8,手動在瀏覽器轉編碼為 BIG5 後,亂碼就恢復正常顯示「台北標準時間」。

由於個人潔癖 (X) 龜毛病 (O) 發作的關係,實在不喜歡一進網站就看到亂碼,更別提還要手動切換,但 APCUPSD 的監控頁面又是用編譯過的 CGI 程式產生,無法自行修改語言編碼,除非再花時間研究 APCUPSD 的 Source code,但…我哪來這麼多美國時間。 /8-)/

想了想,決定嘗試請出牌子老功能好的 IIS URL Rewrite 模組來強制變更輸出語言編碼,要請注意這個模組必須額外下載安裝 (這麼好用的模組為什麼不直接內建?)。

URL Rewrite 安裝很無腦不再特別說明。
安裝好之後,到 IIS 管理員選擇要設定的站台,接著點選「URL Rewrite」。

在右方動作窗格找到「新增規則」,「輸出規則」的位置新增空白規則。

接著,參考下圖資訊做設定,尤其重點在值的部份務必將 charset 指定為 big5。

我個人其實很少用 GUI 設定 URL Rewrite 的規則,可以參考下面語法直接編修站台的 web.config

<rewrite>
      <outboundRules rewriteBeforeCache="True">
        <rule name="Reset Header Charset">
           <match serverVariable="RESPONSE_Content-Type" pattern=".+" />
           <action type="Rewrite" value="text/html; charset=big5" />
        </rule>
      </outboundRules>        
</rewrite>

新增完成,重整頁面。
果然就在沒動到任何網頁程式的情況下,成功將頁面的語言編碼變為 BIG5 正常顯示中文。

沒有任何回應 , 標籤:


發表迴響

*