KB-留意js檔編碼問題

過去網站專案很多都採用Big5編碼,但在因應Unicode難字或多國語系時,免不了要吃苦頭。現在的新專案,都應該要以Unicode為尊,編碼方式則以UTF-8為王。

將舊Big5專案裡的檔案搬移到UTF-8 ASP.NET專案時,會有編碼不符的問題。網頁編碼錯亂會導致螢幕出現亂碼,很容易發現與校正。相形之下,當Big5編碼js檔被複製到UTF-8 Web Site時,產生的現象就高深莫測,讓許多人會意不過來。

在我的經驗中,依個人運勢好壞,可能會有以下難易程度不同的徵兆:

  1. 祖上積德型
    如果你的js如下,多半能直接看到Popup的對話框中有????或亂碼,不難追出與js的編碼有關,這是最容易察覺的情況。
    function showMsg() { alert('執行完成!'); }
  2. 凡夫俗子型
    如果你的js如下,會出現Unterminated string constant + Object expected兩個錯誤,有點難猜了吧? 不過"字串常數未正常終結"仍提供了相關的提示,有經驗的人多半追得到。
    (許功蓋先生MySQL, PHP界令人聞風喪膽,恐怖程度直逼佛地魔。啥? 沒聽過許功蓋? 那你肯定是麻瓜,哈!)
    function showMsg() { alert('執行成功'); }
  3. 天打雷劈型
    如果你的js如下,錯誤訊息將會是Expected '}' + Object expected!
    function showMsg() {
        alert('成功'); //'
    }
    怎樣,很難聯想到是編碼問題吧? (遇此情況,最好順便檢討一下平時是否有心懷不軌、負心劈腿、濫發好人卡等缺德行徑,才會遭此天譴~~)

js編碼不符的偵察不容易,但解決方法很簡單,將檔案另存為UTF-8格式就OK了。所以在遇到詭異Javascript錯誤時能先排除js檔編碼不合問題,應該就可明哲保身吧! 阿彌陀佛。

歡迎推文分享:
Published 04 May 2007 09:17 PM 由 Jeffrey
Filed under: , ,
Views: 10,588



意見

# chicken said on 05 May, 2007 04:04 AM

Microsoft 把 JScript Engine 內建在 windows, 其實到處都碰的到這種鳥問題.. WSH, ASP (server side) 也都碰過...

2000 的 engine + iis5 + asp, 還沒有辦法直接接受 UTF-8 編碼的 java script 當作 server side script, 碰到 unicode 問題只能遶路解決.. 我的作法是把字串都拆到 xml 檔, 然後在 build 時直接產生靜態 jscript, 像這樣:

var reskey_001 = unescape("%12%34%56%78");

var reskey_002 = unescape("%12%34%56%78");

var reskey_003 = unescape("%12%34%56%78");

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<May 2007>
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication