c# - 为什么在某些情况下 Request.QueryString 将 + 替换为空字符?

标签 c# asp.net query-string

我有一个问题,如果我在查询字符串中传递一个包含 + 的字符串并尝试读取它,它会得到相同的字符串,但将 + 替换为空字符
例如,如果我传递像 ../Page.aspx?data=sdf1+sdf 这样的查询,那么在页面加载中我通过 data = Request.QueryString[ 读取 data "data"] 它将得到如下 data ="sdf1 sdf"
我通过用 + ..

替换任何空字符来解决问题

但是有什么问题导致这个吗?我用 + 替换空字符的解决方案是否是所有情况下的最佳解决方案?

最佳答案

因为+是空格""的url编码表示。如果您想在值中保留加号,则需要对其进行 url 编码:

"/Page.aspx?data=" + HttpUtility.UrlEncode("sdf1+sdf")

这将产生:

/Page.aspx?data=sdf1%2bsdf

现在,当您阅读 Request.QueryString["data"] 时,您将得到您所期望的结果。

关于c# - 为什么在某些情况下 Request.QueryString 将 + 替换为空字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3356829/

相关文章:

c# - 为什么 nhibernate LINQ 不支持简单的外部连接(给定外部连接表上的 where 子句)?

asp.net - 尝试将图像上传到 Azure 但收到 404

asp.net - 受 asp.net MVC 启发的更好的 WebForms

php - mod_rewrite {QUERY_STRING}

asp.net - 通过添加哈希来防止查询字符串操作?

c# - 多个 Windows 用户帐户上的一个实例应用程序

c# - LINQtoCSV |如何在 CSV 文件末尾写入文本

c# - 组合键匹配的多个字典

ASP.net vNext 和 Entity Framework 6

php - 如何在 PHP 中组合查询字符串