KB-留意js檔編碼問題
過去網站專案很多都採用Big5編碼,但在因應Unicode難字或多國語系時,免不了要吃苦頭。現在的新專案,都應該要以Unicode為尊,編碼方式則以UTF-8為王。
將舊Big5專案裡的檔案搬移到UTF-8 ASP.NET專案時,會有編碼不符的問題。網頁編碼錯亂會導致螢幕出現亂碼,很容易發現與校正。相形之下,當Big5編碼js檔被複製到UTF-8 Web Site時,產生的現象就高深莫測,讓許多人會意不過來。
在我的經驗中,依個人運勢好壞,可能會有以下難易程度不同的徵兆:
- 祖上積德型
如果你的js如下,多半能直接看到Popup的對話框中有????或亂碼,不難追出與js的編碼有關,這是最容易察覺的情況。
function showMsg() { alert('執行完成!'); }
- 凡夫俗子型
如果你的js如下,會出現Unterminated string constant + Object expected兩個錯誤,有點難猜了吧? 不過"字串常數未正常終結"仍提供了相關的提示,有經驗的人多半追得到。
(許功蓋先生在MySQL, PHP界令人聞風喪膽,恐怖程度直逼佛地魔。啥? 沒聽過許功蓋? 那你肯定是麻瓜,哈!)
function showMsg() { alert('執行成功'); }
- 天打雷劈型
如果你的js如下,錯誤訊息將會是Expected '}' + Object expected!
function showMsg() {
alert('成功'); //'
}
怎樣,很難聯想到是編碼問題吧? (遇此情況,最好順便檢討一下平時是否有心懷不軌、負心劈腿、濫發好人卡等缺德行徑,才會遭此天譴~~)
js編碼不符的偵察不容易,但解決方法很簡單,將檔案另存為UTF-8格式就OK了。所以在遇到詭異Javascript錯誤時能先排除js檔編碼不合問題,應該就可明哲保身吧! 阿彌陀佛。