Indeed, it's part of the http standard that characters with a special meaningin in URLs (like :, for example) get encoded in that way - otherwise there's a risk of the URL breaking. The server/PHP would convert the encoded values back on its own, however.
To do it by hand, see the urlencode() and urldecode() functions.