根据RFC 2396,
加号“+”,美元“$”和逗号 “,”字符已添加到
那些在“保留”集中,因为 他们被视为保留 查询组件。
确实,在这个网站上搜索“加+逗号,美元$”,你就得到了
https://stackoverflow.com/search?q=plus+%2B+comma+,+dollar+ $
Plus仅在未被用作分隔符时(由应用程序编码)。
但是作为others have observed,.NET的UrlDecode
函数将加号转换为空格。指定了这种行为在哪里?
答案 0 :(得分:7)
指定了此行为的位置?
HTML规范,奇怪的是。
UrlDecode
有点误导性地命名。
+
仅代表HTML定义的application/x-www-form-urlencoded
数据中的空格;也就是说,在表单POST提交请求正文或URL的?query
部分。这是一个特例!在URL的其他地方,加号只是一个加号。
http://www.example.com/path+path/x?query+name=query+value
在此网址中,参数query name
设置为query value
。它可能是通过以GET形式提交此表单字段生成的:
<input name="query name" value="query value">
但是,文件夹名称实际上是path+path
。没有空间。
因为这是令人困惑且可能含糊不清的,所以最好的方法是将空格编码为%20
。您可以使用UrlPathEncode在.NET中执行此操作。这在URL的查询部分和路径中都同样有效。