2010-02-08 84 views
10

我试图通过HTTP请求传递一个字符串,该请求在URL查询字符串中有一个字符%如何在URL查询字符串中传递%?

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

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

Element Q is undefined in URL.

我怎么编码在URL中%标志?

回答

12

你应该URL编码,所有的值要传递的查询参数,但网址编码为%的是%25

更新:如果你在JavaScript构建查询参数,你可能想要做到:

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

(与ZeissS”非常有帮助的建议,使用encodeURIComponent代替escape再次更新又见http://xkr.us/articles/javascript/encode-compare/

+1

您应该使用'encodeURIComponent()',因为您正在转义URL的单个组件。 – ZeissS 2010-02-08 22:57:20

+0

非常感谢它的工作:) – 2010-02-08 22:57:28

9

您通过串槽的功能encodeURI(...)会逸出所有的特殊字符不仅%

+0

非常感谢! encodeURI()是一个很好的帮助。 – 2010-02-08 22:58:18

+0

也考虑'encodeURIComponent',正如Brad G.的答案中指出的那样。 'encodeURI'不编码某些在这种情况下*应编码的字符。一个不编码的字符就是'&',作为它在这里可能不好的一个简单例子。 – 2010-02-08 23:19:50

+0

@pst但是,如果你想在查询字符串中传递参数,为什么要转义&分开参数? – Mic 2010-02-08 23:39:47

3

ColdFusion的URLEncodedFormat()

+0

谢谢你的时间。 我可以在Oracle数据库中插入数据时使用URLEncodedFormat()吗? – 2010-02-08 23:00:28

+0

当然,但你必须问自己,这是否真的是你想要做的。 – Henry 2010-02-08 23:11:50

-2

我们可以在ColdFusion中使用URLEncodedFormat()以及我们可以使用下面提到的一个。

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

这两人还帮助我们解决我们的问题。