﻿# 淺談在 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](http://www.w3schools.com/jsref/jsref_obj_global.asp)
