Percent-encoding
Percent-encoding is a mechanism to encode 8-bit characters that have specific meaning in the context of URLs. It is sometimes called URL encoding. The encoding consists of substitution: A '%' followed by the hexadecimal representation of the ASCII value of the replace character.
Special characters needing encoding are: ':', '/', '?', '#', '[', ']', '@', '!', '$', '&', "'", '(', ')', '*', '+', ',', ';', '=', as well as '%' itself. Other characters don't need to be encoded, though they could.
| Character | Encoding |
|---|---|
':' | %3A |
'/' | %2F |
'?' | %3F |
'#' | %23 |
'[' | %5B |
']' | %5D |
'@' | %40 |
'!' | %21 |
'$' | %24 |
'&' | %26 |
"'" | %27 |
'(' | %28 |
')' | %29 |
'*' | %2A |
'+' | %2B |
',' | %2C |
';' | %3B |
'=' | %3D |
'%' | %25 |
' ' | %20 or + |
Depending on the context, the character ' ' is translated to a '+' (like in the percent-encoding version used in an application/x-www-form-urlencoded message), or in '%20' like on URLs.
See also
- Definition of percent-encoding in Wikipedia.
- RFC 3986, section 2.1, where this encoding is defined.
encodeURI()andencodeURIComponent()— functions to percent-encode URLs