我想通过HTTP请求传递一个字符串,其中URL查询字符串中有一个字符是%
。
url = url + "?q=" + str + "&block=" + block; // str contains the '%' character
但是当我将这些信息发送到 ColdFusion 页面时,它返回以下错误:
URL 中未定义 Q 元素。
我该如何在 URL 中编码百分号(%
)标记?
我想通过HTTP请求传递一个字符串,其中URL查询字符串中有一个字符是%
。
url = url + "?q=" + str + "&block=" + block; // str contains the '%' character
但是当我将这些信息发送到 ColdFusion 页面时,它返回以下错误:
URL 中未定义 Q 元素。
我该如何在 URL 中编码百分号(%
)标记?
你应该对所有传递的查询参数进行URL编码,但是对于百分号的URL编码为%25
更新:如果你正在JavaScript中构造查询参数,你可能想要执行以下操作:
url=url+"?q="+encodeURIComponent(str)+"&block="+encodeURIComponent(block)
(经过 ZeissS 的建议,更新并使用 encodeURIComponent
代替 escape
。另请参阅http://xkr.us/articles/javascript/encode-compare/)
将你的字符串传递给函数encodeURI(...)
,它将转义所有特殊字符,而不仅仅是%
encodeURIComponent
,正如Brad G.在下面的答案中提到的那样。在这种情况下,encodeURI
不会编码一些应该编码的字符。它不编码一个字符作为为什么在这里它可能是有问题的一个微不足道的例子,即'&'。 - user166390我们可以在ColdFusion中使用URLEncodedFormat(),也可以使用下面提到的方法。
这两个也帮助我们解决了问题。
encodeURIComponent()
,因为你正在转义URL的单个组件。 - ZeissS