被 VBScript 語系問題咬傷多次,前幾天分享換帳號執行程式產生多餘空白一文後,在臉書專頁與留言區都接到網友回響,雖然晚了十年學會,日後用到的機率也微乎其微,還是寫篇筆記備忘。

先前遇到的狀況是 Windows 語系被設成英文,導致中文字元被解析成問號衍生錯誤。然而,除了依賴作業環境語系正確設定,VBScript 也能拿回主導權操之在己。VBScript 有個 SetLocale 函式,呼叫 SetLocale("zh-tw") 或 SetLocale(1028) 可將語系切換成中文(台灣),如下圖所示,即使執行環境語系被設為英文,一樣能正常識別中文字元。(順便測了日期格式,日期格式不受語系切換影響)

除了 SetLocale() 之外,還有一招 - chcp。(參考:在命令提示視窗(Command Prompt)顯示UTF-8內容),執行前呼叫 chcp 950 切換語系,也能確保執行結果正確。

使用 chcp 必須搭配批次檔在執行 VBScript 前呼叫,方便性不如 SetLocale()。所以 VBScript 如有會受語系影響的作業,呼叫 SetLocale() 還是最簡便牢靠的做法。

感謝網友 Hsi-Lien Chin、 不知道排到幾號的鐵粉 提醒補充。

Tips of using SetLocale() and chcp to avoid locale issue in VBSCript


Comments

Be the first to post a comment

Post a comment