Some characters cannot be part of a URL (for example, the space) and some other characters have a special meaning in a URL. In HTML forms, the character = is used to separate a name from a value. The URI generic syntax uses URL encoding to deal with this problem, while HTML forms make some additional substitutions rather than applying percent encoding for all such characters.
For example, spaces in a string are either encoded with %20 or replaced with the plus sign (+). If you use a pipe character (|) as a separator, be sure to encode the pipe as %7C. A comma in a string should be encoded as %2C.
It is recommended you use your platform's normal URL building libraries to automatically encode your URLs, to ensure the URLs are properly escaped for your platform.
Source: URL Encoding
Some common characters that must be encoded are:
|Unsafe character||Encoded value|
There are RFCs that define format for URLs, and browser/web server developers rely on this as a standard for interpreting data. If you don't comply, the results may be unpredictable.