为什么Request.QueryString在某些情况下用空char替换+?

时间:2010-07-28 19:46:50

标签: c# asp.net query-string

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

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

但是否有任何问题导致这种情况?在所有情况下,用+替换空char是我最好的解决方案吗?

1 个答案:

答案 0 :(得分:5)

因为+是空间" "的网址编码表示。如果你想在你的值中预先加上加号,你需要对其进行url编码:

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

将产生:

/Page.aspx?data=sdf1%2bsdf

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