逃避'和&和url中的类似字符

时间:2016-07-13 20:44:55

标签: javascript url urlencode url-encoding

我需要一种方法来对网址中的&// "get_records.php?artist=Mumford%20%26%20Sons" "get_records.php?artist=" + encodeURIComponent("Mumford & Sons"); // "get_records.php?artist=Gigi%20D'Agostinos" "get_records.php?artist=" + encodeURIComponent("Gigi D'Agostino"); 进行编码。请查看以下示例:

encodeURIComponent

'不会对escape进行编码。我可以改用:,但我不赞成使用它。在这种情况下我该怎么办?创建自定义编码器?

我也会逃避其他角色:/.,!"11:59" "200 km/h in the Wrong Lane" "P.O.D." "Everybody Else Is Doing It, So Why Can't We" "Up!" ,例如,以下内容字符串

testProperty

因此,创建自定义编码器似乎是最佳选择。我可以使用替代方法吗?

2 个答案:

答案 0 :(得分:1)

您必须自己实现此功能。

MDN涵盖了这个确切的主题。将他们的提案扩展到涵盖&角色以及其他角色也应该是微不足道的。

  

要更加严格地遵守RFC 3986(保留!,',(,)和*),即使这些字符没有正式的URI分隔用途,也可以安全地使用以下内容:

function fixedEncodeURIComponent (str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
    return '%' + c.charCodeAt(0).toString(16);
  });
}

Source

答案 1 :(得分:0)

您可以在创建网址之前替换字符。

' = %27

检查一下: http://www.w3schools.com/tags/ref_urlencode.asp