使用javascript encodeURIComponent函数编码空间
时间:2020-03-06 14:25:42 来源:igfitidea点击:
为什么JavaScript函数encodeURIComponent
将空格编码为十六进制Unicode值%20,而不是+。 URI参数不应该在+
之间加空格吗?
解决方案
空格编码为%20,我相信这是它们的ASCII字符代码。
但是,开发人员大胆地将空格编码为+,因为它生成的URL可以被人类读取和键入。
通常,文件路径应具有编码为%20的空格。查询字符串参数的空格应编码为+。
例如:http://www.example.com/a%20file.ext?name=John+Doe
在URI的所有用法中,不能将+识别为空格,例如,尝试使用此链接:-
mailto:bloke @ somewhere?subject = Hello + World
主题行仍带有+,而:-
mailto:bloke @ somewhere?subject = Hello%20World
作品。
将+号用作空格是出于历史原因。然后,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
对于大多数用例,+符号的含义将是参数值中的项或者项分隔符。这就是我今天建议使用的区域。