QueryString中的加号变成了空格问题解决方法
2010-03-08 10:56
615 查看
今天遇到这个问题,在网上找了几个答案,解决了问题,很高兴,所以贴出来给大家分享一下:
URL如下
http://127.0.0.1/test/test.aspx?sql= and id='300+'
Request.QueryString["sql"]后取出的值为and id='300',
“+”就消失了,请问这是为什么?应该如何解决呢?
______________________________________________________________________________________________
答1:
你应该先对url编码
"test.aspx" + Server.UrlEncode(sql)
______________________________________________________________________________________________
答2:
Server.UrlEncode后,空格就会变为%20%了呢
现在手上的项目中使用了ClickOnce技术来部署客户端,客户端有时需要从服务器传一些参数,对于ClickOnce部署的程序来说我们可以在launch的URL中使用query strings来达到这一目的。参照MSDN上的文章,很快就写完了代码。好了,试试看。部署,从服务器launch客户端,似乎一切正常,所有参数的值都顺利得到了。
可还没等Check-in代码,一个测试就失败了。Debug了半天才发现原来是一个参数值中又加号:+。在使用HttpUtility.ParseQueryString分析query string后参数值中的加号变成了空格,以前似乎没遇到过这样的现象。Google了一下才知道原来加号在query string是保留用来代表空格的,要在query string中传这些保留字符必须对query string进行编码。
修改了服务端的代码,想当然的在客户端加了decode的方法,没想到结果还是不对。查了MSDN关于HttpUtility.ParseQueryString方法的帮助才知道原来这个方法内置会对query string进行解码(decode)并返回包含结果的NameValueCollection。
忙了半天最后终于搞定了。
总结一下:
1)安全起见query string一定要encode
2)HttpUtility.ParseQueryString会自动做decode,不要画蛇添足。
相关文章推荐
- QueryString中的加号变成了空格问题解决方法
- javascript 传递参数中带加号自动变成了空格的解决方法
- Android:HTTP中传输加号变成空格的解决方法
- 关于利用Jsoup解析HTML中 变成非传统空格或乱码问题解决方法
- 关于利用Jsoup解析HTML中 ;变成非传统空格或乱码问题解决方法
- Java中字符串中存在空格引发的问题,及解决方法。
- 硬盘变成raw格式的问题的解决方法
- cmd模式下cd目录,文件夹命名有空格无法切换问题解决方法
- java jxl导出excel,当数字超过11位变成科学计数法,如何转换成数字问题解决方法
- Swing中汉字变成方框问题的解决方法
- input 中空格截段的问题解决方法
- IOS URL无法对加号进行编码导致http请求时服务器端获取的内容中加号变成空格问题
- XP任务栏变成灰白,任务栏变成经典风格问题的解决方法
- 空格 在不同浏览器中显示距离不一致问题解决方法
- vs2005的使用,莫名其妙的源代码编辑器的空格都变成了小点,还有箭头。解决方法!
- input 中空格截段的问题解决方法
- SQLServer 数据库变成单个用户后无法访问问题的解决方法
- SQLServer 数据库变成单个用户后无法访问问题的解决方法
- Base64编码详解及其变种(解决加号在URL变空格问题)
- 空格 在不同浏览器中显示距离不一致问题解决方法