今天遇到这个问题,在网上找了几个答案,解决了问题,很高兴,所以贴出来给大家分享一下:

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取值时候发生+号变空格的问题的更多相关文章

  1. 前端JS获取路由地址里的参数QueryString取值

    参数的获取 声明一个函数 //参数name是路由参数 engNo function getQueryString(name) { var reg = new RegExp("(^|& ...

  2. tomcat自动URLDecode解码问题(+号变空格)

    最近项目中出现一个问题,就是前段调后端接口,参数带+号,传到后端后+号自动URLDecode成空格了. 1.问题排查 条件:tomcat配置server.xml有URIEncoding="U ...

  3. base64码通过http传输 +号变 空格 以及 图片编码后字符串较长导致POST提交失败 问题解决

    场景:图片上传OSS存储,接口拿字符串去接前端传的base64码,服务器打印入参传的值,发现和前端打印的值有所区别,服务器中打印的值所有+号全部变成空格. 解决办法: Java中使用:url = ur ...

  4. base64码通过http传输 +号变 空格 问题解决

    通过七牛云base64上传图片,通过官方示例上传成功后,根据示例改了一个controller. 通过前端往后端传base64码形式进行测试.死活不通过,七牛报400. 仔细排查后发现,示例转换的bas ...

  5. MariaDB MySQL变量取值避免四舍五入的方法

    MySQL变量取值避免四舍五入的方法 By:授客 QQ:1033553122 在一些对数据精确度要求比较高的场景(比如资金结算)下,变量取值时不能对变量值进行四舍五入操作,这时候就要做些预处理工作. ...

  6. struts2 页面标签或ognl表达式取值--未完待续

    一.加#号取值和不加#号取值的解说 1.s:property 标签——value属性使用事项 1)涉及问题:取值时什么时候该加#,什么时候不加? 2)介绍 <s:property value=& ...

  7. jQuery对html元素的取值与赋值实例详解

    jQuery对html元素的取值与赋值实例详解 转载  2015-12-18   作者:欢欢   我要评论 这篇文章主要介绍了jQuery对html元素的取值与赋值,较为详细的分析了jQuery针对常 ...

  8. jmeter问题处理随笔1 - CSV取值数据异常处理(包含"号,","号的情况)

    背景 jmeter测试中通过CSV进行用例数据的管理,在result断言中间需要使用json格式的数据,会包含 " ",",这个时候发现CSV取值会报错或者乱码 解决 用 ...

  9. mybatis学习$与#号取值区别

    1,多个参数传递用map或实体封装后再传给myBatis, mybatis学习$与#号取值区别 #{} 1.加了单引号,  2.#号写是可以防止sql注入,比较安全 select * from use ...

随机推荐

  1. 分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计

    **注:要做工,没什么时间,等有空时会上传到GIT,项目结构如上,简单的说一下: **支持IOC及多数据库等,各项目由MVC区域隔离: 主要使用基于接口与抽象类进行高度的抽象与接口隔离,与其它框架比较 ...

  2. 循序渐进看Java web日志跟踪(3)-Log4J的使用和配置

    之前说过关于java日志跟踪的几大主要用的框架,也说到了,其实在其中,Log4J充当着一个相当重要的角色.目前,大部分框架也都是采用的是Log4J,虽然说它已经停止了更新,作者也重新起了LogBack ...

  3. angular-ui-bootstrap插件API - Tabs

    Tabs 案例 <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> ...

  4. 为什么Intent传递对象的时候必须要将对象序列化呢?

    Intent可以算是四大组件之间的胶水,比如在Activity1与Activity2之间传递对象的时候,必须要将对象序列化, 可是为什么要将对象序列化呢? Intent在启动其他组件时,会离开当前应用 ...

  5. c#弱事件(weak event)

    传统事件publisher和listener是直接相连的,这样会对垃圾回收带来一些问题,例如listener已经不引用任何对象但它仍然被publisher引用 垃圾回收器就不能回收listener所占 ...

  6. Leetcode 解题报告

    347. Top K Frequent Elements Given a non-empty array of integers, return the k most frequent element ...

  7. sharepoint代码添加WebPart

    Adding a web part   Following code snippet can be used to add a web part in an existing SharePoint w ...

  8. 🐒-mysql(1)

    Mac 终端启动mysql 本文下载的mysql版本为:5.7.17.MySQL Workbench版本为:5.2.47(后面会提及如何选择下载版本) 一.下载MySQL 1.1.访问http://w ...

  9. Knockout js 绑定 radio 时,当绑定整形的时候,绑定不生效

    解决方案: 使用checkedValue和checked 组合,如下代码. <div><input type="radio" name="flavorG ...

  10. .net导出不规则Excel

    using Hamp.App.BLL; using Hamp.App.Model; using Hamp.App.Model.QualityManagement; using System; usin ...