我试图发送一个包含与符号的字符串的GET消息,不知道如何在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,所以我只需要正确的字符。

我不能使用任何库。怎样才能做到呢?


当前回答

如果有人想在PHP中使用它,这可能会有所帮助

$variable ="candy_name=M&M";
$variable = str_replace("&", "%26", $variable);

其他回答

您可以使用encodeURIComponent函数传递参数,这样就不必担心传递任何特殊字符。

data: "param1=getAccNos&param2="+encodeURIComponent('Dolce & Gabbana') OR
var someValue = 'Dolce & Gabbana';
data : "param1=getAccNos&param2="+encodeURIComponent(someValue)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

它们需要用百分比编码:

> encodeURIComponent('&')
"%26"

所以在你的例子中,URL看起来像这样:

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

我想对Blender的解决方案添加一个小小的评论。

您可以执行以下操作:

var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M');

输出:

http://example.com?candy_name=M%26M

这样做的好处是,它不仅适用于&,而且适用于任何特殊字符。

例如:

var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M?><')

输出:

"http://example.com?candy_name=M%26M%3F%3E%3C"

尝试使用http://www.example.org?candy_name=M%26M。

也可以在维基百科上看到这篇参考文献和更多信息。

您可以使用%字符来“转义”url中不允许的字符。参见RFC 1738。

维基百科页面上给出了ASCII值的表格。

你可以看到&在十六进制中是26——所以你需要M%26M。