http://www.w3schools.com/tags/ref_urlencode.asp
Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid
The characters in a URL should be encoded because some characters have a special meaning according to the URL specification, some characters are not allowed and some characters are not representable in all character sets.
See this intro for a little more guidance.
Regarding the examples of characters that you give '/' is reserved for use as a component separator in URLs and '%' is used as an escape character.
As noted, spaces are not valid in URLs. Most browsers orlencode them automatically. However...
The page you linked to has an example using the word "Günter" in the "Try me" section. If the word "Günter" were sent as a querystring parameter, it wouldn't work. as the "ü" is not in the standard ASCII character set.
It's meant to be used when there are potentially non-ASCII characters. An example might be when using data from a database to create a hyperlink. Suppose the code creates a link to a user profile page. Unencoded, mine would be:
<a href="profile/?username=David Stratton">Your profile</a>
while Günter's would be
<a href="profile/?username=Günter">Your profile</a>
Mine, most browsers could handle. Günter's, probably not.
Encoded, these would become
<a href="profile/?username=David%20Stratton">Your profile</a>
and
<a href="profile/?username=G%FCnter">Your profile</a>
which are valid URLs.
(Please forgive the fact that most well-designed systems wouldn't pass a username in a parameter like that. This was just a sample to clarify the concept.)
Here you go:
When are you supposed to use escape instead of encodeURI / encodeURIComponent?
This is the best explanation I found and was helpful to me.
Certain characters, such as spaces, need to be escaped to ensure valid urls. Once place where this is sure to come up a lot is when generating GET parameters.