使用javascript encodeURIComponent函数编码空格

时间:2008-09-19 12:26:12

标签: javascript

为什么JavaScript函数encodeURIComponent将空格编码为十六进制Unicode值%20而不是+。 URI参数不应该是+的空格吗?

4 个答案:

答案 0 :(得分:4)

空格编码为%20,我相信这是他们的ASCII字符代码。

然而,开发人员已经将编码空间变为+,因为它生成了人类可读和可输入的URL。

答案 1 :(得分:2)

在URI的所有使用中,+不被识别为空格,例如尝试使用此链接: -

的mailto:?小子@某处受试者=你好+世界

主题行仍然具有+而::

的mailto:?小子@某处受试者=你好%20World

作品。

答案 2 :(得分:0)

作为一般规则,文件路径应具有编码为%20的空格。查询字符串参数的空格应为+。

例如:http://www.example.com/a%20file.ext?name=John+Doe

答案 3 :(得分:0)

使用+号作为空格是出于历史原因。然后,CGI使Web服务器能够将正常的命令行程序用作“Web应用程序”。在命令行程序的脚本世界中,大多数解释器/ shell语言都有空格分隔的值列表,如

items = (A beautiful world)
foreach( item in $items ) echo "* $item"

从命令行调用这样的“列表呈现应用程序”:

render-list A beautiful world

通过http和网络服务器调用相同的“列表呈现应用程序”:

http://testhost/cgi-bin/render-list?A+beautiful+world

对于大多数用例,+符号的含义将是参数的中的项目或术语分隔符。这是我今天推荐使用它的区域。