What’s the difference between URL Encoding and Form URL Encoding?
URL Encoding
Sometimes refered to as Percent Encoding, this scheme is intended to encode non-ASCII characters consistently in URLs. For example, characters like # have special meaning in a URL and would need to be converted to avoid problems. The scheme is recognisable by the replacement of characters with a percentage value. For example, the space character gets replaced by %20.
In Java, you can create an encoded URL using
|
which in this case produces
http:baddotrobot.com#/cheese%20sandwich
Form URL Encoding
Refered to by the application/x-www-form-urlencoded mime-type. This scheme was based on an early version of URL Encoding but at some point diverged. For example, the space character gets replaced by the + rather than %20. It’s typically used for encoding POST message content by HTML forms.
For example, a HTML form with name and address would send over the following.
POST http://baddotrobot.com/ HTTP/1.1
Content-Type: application/x-www-form-urlencoded
name=bad.robot&address=the+land+of+make+believe
Use the unhelpfully named class URLEncoder in Java
|
Base64 Encoding
Another one to be aware of, this is a basic encoding used by various protocols related to HTTP. For example, basic authentication is supported by adding a Authorization header with base 64 encoded username and password; you’d do something like the following.
|
Which, for example, could be used to send the following HTTP message
GET /login HTTP/1.1
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=