为什么有时空间是+,有时是URL中的%20?

时间:2015-07-13 23:19:45

标签: php html forms url

我有两个页面,每个页面都有一个form。像这样的东西:

// index.php

<form name="SampleForm" method="get"  action="search.php">
<input id="q" name="q" type="text"/>  //  text field
<input name="" type="submit" />       //  button
</form>


// search.php

<form name="SampleForm" method="get"  action="">
<input id="q" name="q" type="text"/>  //  text field
<input name="" type="submit" />       //  button
</form> 

现在,当我提交index.php时,网址是这样的:

www.example.com/search.php?q=foo+bar

但是当我提交search.php时,网址就是这样的:

www.example.com/search.php?q=foo%20bar

为什么?我该如何解决? (我只想+

修改 index.phpsearch.php不是ajax,search.phpsearch.php是ajax。这是真的,将+更改为%20的原因是重定向。那么,我是否可以在重定向的网页中从%20转换为+

3 个答案:

答案 0 :(得分:1)

我不明白为什么search.php中的表单会生成包含resutl.php的URL,因为未指定该操作。

我发现这种情况的唯一方法是,如果search.php中包含构建重定向网址的代码,并且该代码使用%20编码格式。

看看search.php如何最终重定向到resutl.php。答案就在那里。

<强>更新

根据评论,您似乎是通过Ajax访问此URL。查看为Ajax调用形成URL的位置。

答案 1 :(得分:1)

嗯,默认情况下,网络表单会使用+作为GET表单。

区别在于index.php您直接将数据发送到result.php,因此浏览器会将其显示为+

但是在search.php中,结果首先发给search.php(因为动作是“”),然后我猜你正在重定向到result.php。这个额外的重定向是将+转换为%20

最后,它们都是等价的 - 你使用哪一个并不重要。

答案 2 :(得分:1)

这两种编码形式是等价的。较旧的RFC标准定义该空间应编码为加号&#34; +&#34;,较新的RFC标准定义为使用百分比编码和十六进制ASCII值。

所有互联网客户,搜索引擎,蜘蛛等都知道如何处理它。