我知道URL查询字符串中的+表示空格。在查询字符串区域之外也是这样吗?也就是说,下面的URL:
http://a.com/a+b/c
实际上代表:
http://a.com/a b/c
(因此,如果它实际上应该是a+,就需要编码),还是它实际上代表a+b/c?
我知道URL查询字符串中的+表示空格。在查询字符串区域之外也是这样吗?也就是说,下面的URL:
http://a.com/a+b/c
实际上代表:
http://a.com/a b/c
(因此,如果它实际上应该是a+,就需要编码),还是它实际上代表a+b/c?
当前回答
使用encodeURIComponent函数来修复url,它适用于Browser和node.js
res.redirect("/signin?email="+encodeURIComponent("aaa+bbb-ccc@example.com"));
> encodeURIComponent("http://a.com/a+b/c")
'http%3A%2F%2Fa.com%2Fa%2Bb%2Fc'
其他回答
使用encodeURIComponent函数来修复url,它适用于Browser和node.js
res.redirect("/signin?email="+encodeURIComponent("aaa+bbb-ccc@example.com"));
> encodeURIComponent("http://a.com/a+b/c")
'http%3A%2F%2Fa.com%2Fa%2Bb%2Fc'
试试下面:
<script type="text/javascript">
function resetPassword() {
url: "submitForgotPassword.html?email="+fixEscape(Stringwith+char);
}
function fixEscape(str)
{
return escape(str).replace( "+", "%2B" );
}
</script>
你可以在W3Schools上找到一个很好的对应URL编码字符列表。
+变成%2B 空间变成%20
URL的路径部分中的百分比编码预计将被解码,但是 路径组件中的任何+字符都应该按字面意思处理。
显式:+在查询组件中只是一个特殊字符。
https://www.rfc-editor.org/rfc/rfc3986
你应该对url进行编码。
下面是Ruby如何编码你的URL:
irb(main):008:0> CGI.escape "a.com/a+b"
=> "a.com%2Fa%2Bb"