Где указано это поведение?
Спецификация HTML , как ни странно.
UrlDecode
является своего рода обманчиво названным.
+
обозначает только пробел в данных application/x-www-form-urlencoded
, как определено HTML; то есть либо в теле запроса на отправку формы POST, либо в части URL ?query
. Это особый случай! В других местах URL-адреса плюс - это просто плюс.
http://www.example.com/path+path/x?query+name=query+value
В этом URL для параметра query name
установлено значение query value
. Это может быть сгенерировано путем отправки этого поля формы в форме GET:
<input name="query name" value="query value">
Однако имя папки буквально path+path
. Нет места.
Поскольку это сбивает с толку и потенциально неоднозначно, лучший подход всегда заключается в кодировании пробелов в %20
Вы можете сделать это в .NET, используя UrlPathEncode . Это одинаково хорошо работает как в части запроса URL, так и в пути.