如何在URL查询字符串中传递%?

时间:2010-02-08 22:49:24

标签: javascript

我正在尝试通过HTTP请求传递一个字符串,该请求在URL查询字符串中有一个字符%

url = url + "?q=" + str + "&block=" + block;  // str contains the '%' character

但是在我发送此信息的ColdFusion页面上返回以下错误:

  

元素Q在URL中未定义。

如何对网址中的%符号进行编码?

5 个答案:

答案 0 :(得分:12)

您应该将您传递的所有值作为查询参数进行网址编码,但%的网址编码为%25

更新:如果您在javascript中构建查询参数,您可能想要这样做:

url=url+"?q="+encodeURIComponent(str)+"&block="+encodeURIComponent(block)

(再次更新了ZeissS非常有用的建议,使用encodeURIComponent代替escape。另请参阅http://xkr.us/articles/javascript/encode-compare/

答案 1 :(得分:9)

将字符串传递给函数encodeURI(...),它将转义所有特殊字符,而不仅仅是%

答案 2 :(得分:4)

答案 3 :(得分:3)

ColdFusion中的

URLEncodedFormat()

答案 4 :(得分:-2)

我们可以在ColdFusion中使用URLEncodedFormat(),也可以使用下面提到的。

  • 是encodeURI(...)
  • encodeURIComponent方法

这两个也有助于我们解决问题。