【问题标题】:Does UrlDecode handle plus (+) correctly?UrlDecode 是否正确处理加号(+)?
【发布时间】:2010-04-23 17:41:16
【问题描述】:

根据RFC 2396

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

确实,在这个网站上搜索“plus + comma , Dollar $”,你会得到

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

Plus 仅在不用作分隔符时(由应用程序)编码。

但是作为others have observed,.NET 的UrlDecode 函数将加号转换为空格。此行为在哪里指定?

【问题讨论】:

    标签: .net url-encoding


    【解决方案1】:

    此行为在哪里指定?

    HTML 规范,很奇怪。

    UrlDecode 的命名有点误导。

    + 仅代表 HTML 定义的application/x-www-form-urlencoded 数据中的空格;也就是说,可以在表单 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。您可以使用UrlPathEncode 在.NET 中执行此操作。这在 URL 的查询部分和路径中同样适用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-14
      • 2013-10-26
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多