You only need to escape characters that can have special uses within the code.
For example the following can be used to ask the code to do a mathematical comparison or calcuation - < , > , + , - , / , =
then there's reserved characters specific to URL creation such as - ? , @ , %, #
The characters !*'() have no special meaning and so won't be misinterpreted so don't need escaping. You can however escape characters unnecessarily so it might look like a different result, but it would mean/do the same thing.
This has a more thorough breakdown - http://www.blooberry.com/indexdot/html/topics/urlencoding.htm