The Will Will Web

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

淺談在 JavaScript 中的 URLEncode 動作

就我以往的經驗,其實還是有蠻多人不知道 URLEncode 是什麼

當我們在打算用 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