在URL中转义&符号

我正在尝试发送一个GET消息,其中包含符号string,无法计算如何转义URL中的符号。

例:

http://www.example.com?candy_name=M&M result => candy_name = M 

我也试过:

 http://www.example.com?candy_name=M\&M result => candy_name = M\\ 

我手动使用url,所以我只需要正确的字符。

我不能使用任何库。 怎么办?

他们需要百分比编码:

 > encodeURIComponent('&') "%26" 

所以在你的情况下,该url将如下所示:

 http://www.mysite.com?candy_name=M%26M 

不仅适用于URL中的&符号,而且适用于所有保留的字符 。 其中一些包括:

  # $ & + , / : ; = ? @ [ ] 

这个想法& HTML文档中的&相同,但除HTML文档内外,上下文已经更改为URI内。 所以,百分比编码可以防止两个上下文内部的parsing问题。

这个地方很方便的地方是当你需要在另一个URL中放置一个URL。 例如,如果您想在Twitter上发布状态:

 http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com) 

我的Tweet中有很多保留字符,即?'():/ ,所以我编码了status URL参数的整个值。 当使用mailto:链接有一个消息主体或主题时,这也是有帮助的,因为你需要对bodysubject参数进行编码,以保持换行符,符号等完好无损。

当来自保留集(“保留字符”)的字符在特定上下文中具有特殊含义(“保留目的”),并且URIscheme表示需要将该字符用于其他目的时,则字符必须是百分比编码的。 编码保留字符的百分比编码涉及将字符转换为ASCII中相应的字节值,然后将该值表示为一对hex数字。 然后在URI中使用用作转义字符的百分号(“%”)前面的数字代替保留字符。 (对于非ASCII字符,通常以UTF-8格式转换为字节序列,然后每个字节值如上所示。)例如,如果在“path”组件中使用了保留字符“/” URI的特殊含义是作为path段之间的分隔符。 如果根据给定的URIscheme,“/”需要位于path段中,则必须在段中使用三个字符“%2F”或“%2f”,而不是原始的“/”。

http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters

尝试使用http://www.mysite.com?candy_name=M%26M

另请参阅此参考资料以及有关维基百科的更多信息。

您可以使用%字符来“逃避”URL中不允许的字符。 请参阅RFC1738 。

ascii值的表格在这里: http : //www.asciitable.com/

你可以看到26是hex的 – 所以你需要的是M%26M

 // this may help if someone want by php $variable ="candy_name=M&M"; $variable = str_replace("&","%26",$variable ); 

如果您不能使用任何库来对Value进行编码, 请http://www.urlencoder.org/或http://www.urlencode-urldecode.com/或;…

只需input您的价值“M&M”,而不是完整的url;-)