如何在URL查询字符串中传递百分号(%)?

11

我想通过HTTP请求传递一个字符串,其中URL查询字符串中有一个字符是%

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

但是当我将这些信息发送到 ColdFusion 页面时,它返回以下错误:

URL 中未定义 Q 元素。

我该如何在 URL 中编码百分号(%)标记?

5个回答

13

你应该对所有传递的查询参数进行URL编码,但是对于百分号的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

9

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


另外请考虑使用encodeURIComponent,正如Brad G.在下面的答案中提到的那样。在这种情况下,encodeURI不会编码一些应该编码的字符。它不编码一个字符作为为什么在这里它可能是有问题的一个微不足道的例子,即'&'。 - user166390
@pst 但是如果您想在查询字符串中传递参数,为什么要转义分隔参数的&符号呢? - Mic
谢谢,我回来问这个问题只是因为我遇到了&的问题;) 谢谢 - Deepak Yadav


3

感谢您的时间。 在插入 Oracle 数据库时,我可以使用 URLEncodedFormat() 吗? - Deepak Yadav
当然可以,但你必须问问自己,那是否真的是你想做的。 - Henry

-2

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

  • encodeURI(...)
  • encodeURIComponent

这两个也帮助我们解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接