UrlDecode是否正确处理加号(+)?

har*_*rpo 4 .net url-encoding

根据RFC 2396,

加号"+",美元"$"和逗号","字符已添加到
"保留"集中的字符,因为它们在查询组件中被视为保留字符.

确实,搜索这个网站"加+逗号,美元$",你得到

https://stackoverflow.com/search?q=plus+%2B+comma+,+dollar+ $

Plus仅在未被用作分隔符时进行编码(由应用程序).

但正如其他人所观察到的那样,.NET的UrlDecode功能将加号转换为空间.指定了这种行为在哪里?

bob*_*nce 7

指定了这种行为在哪里?

HTML规范,奇怪的是.

UrlDecode 有点误导性地命名.

+仅代表application/x-www-form-urlencodedHTML定义的数据空间; 也就是说,在表单POST提交请求正文或?queryURL 的部分.这是一个特例!在URL的其他地方,加号只是一个加号.

http://www.example.com/path+path/x?query+name=query+value
Run Code Online (Sandbox Code Playgroud)

在此URL中,参数query name设置为query value.它可能是通过以GET形式提交此表单字段生成的:

<input name="query name" value="query value">
Run Code Online (Sandbox Code Playgroud)

但是,文件夹名称是字面意思path+path.没有空间.

因为这是令人困惑的并且可能含糊不清,所以最好的方法始终是将空间编码为%20.您可以使用UrlPathEncode在.NET中执行此操作.这在URL的查询部分和路径中同样有效.