为什么JavaScript函数encodeURIComponent
将空格编码为十六进制Unicode值%20
而不是+
。 URI参数不应该是+
的空格吗?
答案 0 :(得分:4)
空格编码为%20,我相信这是他们的ASCII字符代码。
然而,开发人员已经将编码空间变为+,因为它生成了人类可读和可输入的URL。
答案 1 :(得分:2)
在URI的所有使用中,+不被识别为空格,例如尝试使用此链接: -
的mailto:?小子@某处受试者=你好+世界
主题行仍然具有+而::
的mailto:?小子@某处受试者=你好%20World
作品。
答案 2 :(得分:0)
作为一般规则,文件路径应具有编码为%20的空格。查询字符串参数的空格应为+。
答案 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
对于大多数用例,+符号的含义将是参数的值中的项目或术语分隔符。这是我今天推荐使用它的区域。