Escaping ampersand in URL
I am trying to send a GET message that contains strings with ampersands and can't figure how to escape the ampersand in the URL.
http://www.example.com?candy_name=M&M result => candy_name = M
I also tried:
http://www.example.com?candy_name=M\&M result => candy_name = M\\
I am using URLs manually, so I just need the correct characters.
I can't use any libraries. How can it be done?
They need to be percent-encoded:
> encodeURIComponent('&') "%26"
So in your case, the URL would look like:
Read more... Read less...
This does not only apply to the ampersand in URLs, but to all reserved characters. Some of which include:
# $ & + , / : ; = ? @ [ ]
The idea is the same as encoding an
&in an HTML document, but the context has changed to be within the URI, in addition to being within the HTML document. So, the percent-encoding prevents issues with parsing inside of both contexts.
The place where this comes in handy a lot is when you need to put a URL inside of another URL. For example, if you want to post a status on Twitter:
There's lots of reserved characters in my Tweet, namely
?'():/, so I encoded the whole value of the
status URL parameter. This also is helpful when using
mailto: links that have a message body or subject, because you need to encode the
subject parameters to keep line breaks, ampersands, etc. intact.
When a character from the reserved set (a "reserved character") has special meaning (a "reserved purpose") in a certain context, and a URI scheme says that it is necessary to use that character for some other purpose, then the character must be percent-encoded. Percent-encoding a reserved character involves converting the character to its corresponding byte value in ASCII and then representing that value as a pair of hexadecimal digits. The digits, preceded by a percent sign ("%") which is used as an escape character, are then used in the URI in place of the reserved character. (For a non-ASCII character, it is typically converted to its byte sequence in UTF-8, and then each byte value is represented as above.) The reserved character "/", for example, if used in the "path" component of a URI, has the special meaning of being a delimiter between path segments. If, according to a given URI scheme, "/" needs to be in a path segment, then the three characters "%2F" or "%2f" must be used in the segment instead of a raw "/".
This may help if someone want it in PHP
$variable ="candy_name=M&M"; $variable = str_replace("&", "%26", $variable);
I would like to add a minor comment on Blender solution.
You can do the following:
var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M');
The great thing about this it does not only work for & but for any especial character.
var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M?><')