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

Amr*_*awy 2 c# asp.net query-string

我有一个问题,如果我通过包含字符串+在查询字符串,并尝试读取它,它会得到相同的字符串,但用空字符替换+
例如,如果我通过查询像../Page.aspx?data=sdf1+sdf然后在页面加载我读data通过data = Request.QueryString["data"]它会得到如下 data ="sdf1 sdf"
我通过替换任何空char来解决问题+..

但是有什么问题会导致这种情况吗?在所有情况下,用+替换空char是我的解决方案吗?

Dar*_*rov 5

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

"/Page.aspx?data=" + HttpUtility.UrlEncode("sdf1+sdf")
Run Code Online (Sandbox Code Playgroud)

这将产生:

/Page.aspx?data=sdf1%2bsdf
Run Code Online (Sandbox Code Playgroud)

现在,当你读到Request.QueryString["data"]你将得到你所期望的.