Why is URL-encoding needed?

When a URL points to some kind of web application, it is often necessary to transfer information to that application. A common way is to transfer such parameters via the query string, the part of the url after a "?". If the parameter that shall be transferred is a URL itself, and that URL also contains parameters, we get a collision. It would be impossible for the application receiving the URL to know what parameters belong to this application and what parameters belong to the URL itself. To handle this, certain characters in the transferred URL parameter need to be translated to something else so that no ambiguities apply. This is especially true for characters like &, % and ?. This translation is referred to as url encoding or url escaping.