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 a substitution: A '%' followed by the hexadecimal representation of the ASCII value of the replaced 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.
encodeURI() and encodeURIComponent() — functions to percent-encode URLs