在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:
链接有一个消息主体或主题时,这也是有帮助的,因为你需要对body
和subject
参数进行编码,以保持换行符,符号等完好无损。
当来自保留集(“保留字符”)的字符在特定上下文中具有特殊含义(“保留目的”),并且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;-)