2009/08/06

淺談在 JavaScript 中的 URLEncode 動作


(撰寫於 2009-06-01 )

轉載自 : 記載著 Will 在網路世界的學習心得與技術分享 

當我們在打算用 JavaScript 動態組成一個網址的時候,常會用 JavaScript 中的 escape() 函數,但其實這個函數是有那麼一點點問題的,尤其是在 UTF-8 的頁面中!
例如說「常見的 ASP.NET 開發錯誤」這段字串,在頁面中使用「escape('常見的 ASP.NET 開發錯誤')」就會變成:
%u5E38%u898B%u7684%20ASP.NET%20%u958B%u767C%u932F%u8AA4
但正確來說,應該是底下這段比較正確:
%E5%B8%B8%E8%A6%8B%E7%9A%84%20ASP.NET%20%E9%96%8B%E7%99%BC%E9%8C%AF%E8%AA%A4
話說回來,這兩段的意思是一樣的,也沒有對錯的問題,只是編碼的表示方式不同而已,不過用 %uXXXX 的這種格式有些程式語言(e.g. PHP)是無法正確解析的,所以相容性並不高。
比較正確的用法應該是用 encodeURI()encodeURIComponent() 這個函數,編碼出來的結果就會是正確的了!!
參考網址:http://www.w3schools.com/jsref/jsref_obj_global.asp

沒有留言:

張貼留言