精华内容
下载资源
问答
  • 在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗? 测试: string file="文件上(传)篇.doc"; string Server_UrlEncode=Server.UrlEncode(file); string Server_UrlDecod
    
    

    在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗?
    测试:

    string file="文件上(传)篇.doc";
    string Server_UrlEncode=Server.UrlEncode(file);
    string Server_UrlDecode=Server.UrlDecode(Server_UrlEncode);
    string HttpUtility_UrlEncode=System.Web.HttpUtility.UrlEncode(file);
    string HttpUtility_UrlDecode=System.Web.HttpUtility.UrlDecode(HttpUtility_UrlEncode);
    Response.Write(
    "原数据:"+file);
    SFun.WriteLine(
    "Server.UrlEncode:"+Server_UrlEncode);
    SFun.WriteLine(
    "Server.UrlDecode:"+Server_UrlDecode);
    SFun.WriteLine(
    "HttpUtility.UrlEncode:"+HttpUtility_UrlEncode);
    SFun.WriteLine(
    "HttpUtility.UrlDecode:"+HttpUtility_UrlDecode);

    输出:
    原数据:文件上(传)篇.doc 
    Server.UrlEncode:%ce%c4%bc%fe%c9%cf%a3%a8%b4%ab%a3%a9%c6%aa.doc
    Server.UrlDecode:文件上(传)篇.doc
    HttpUtility.UrlEncode:%e6%96%87%e4%bb%b6%e4%b8%8a%ef%bc%88%e4%bc%a0%ef%bc%89%e7%af%87.doc
    HttpUtility.UrlDecode:文件上(传)篇.doc

    区别在于:HttpUtility.UrlEncode()默认是以UTF8对URL进行编码,而Server.UrlEncode()则以默认的编码对URL进行编码。

    在用 ASP.Net 开发页面的时候, 我们常常通过 System.Web.HttpUtility.UrlEncode 和 UrlDecode 在页面间通过 URL 传递参数. 成对的使用 Encode 和 Decode 是没有问题的.

    但是, 我们在编写文件下载的页面的时候, 常常用如下方法来指定下载的文件的名称:

    Response.AddHeader("Content-Disposition","attachment; filename="
    + HttpUtility.UrlEncode(fileName, Encoding.UTF8));

    之所以转换成 UTF8 是为了支持中文文件名.

    这 时候问题就来了, 因为 HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格就变成了加号.

    一个解决办法是, 在 HttpUtility 的 UrlEncode 之后, 将 "+" 替换成 "%20"( 如果原来是 "+" 则被转换成 "%2b" ) , 如:

    fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8); 
    fileName 
    = fileName.Replace("+""%20"); 

    不明白微软为什么要把空格转换成加号而不是"%20". 记得 JDK 的 UrlEncoder 是将空格转换成 "%20"的.
    经检查, 在 .Net 2.0 也是这样.

    上面是从别的地方拷贝的,写得很好,我自己的一个程序中也遇到同样的问题,默认aspx是以utf-8为编码的,在我这个程序中必须用gb2312为默认编码
    (<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>),

    问 题出现了,以前没有问题的HttpUtility.UrlDecode在Page.Request回的值是乱码这就是上面说的 HttpUtility.UrlDecode默认以UTF8对URL进行编码,这种情况下面只需将HttpUtility.UrlDecode改成 Server.UrlEncode即可。

    展开全文
  • 今天在调试客户端向服务器传递参数时,参数中的“+”全部变成空格,原因是URL中默认的将“+”号转义了。 解决方法如下: 方法一、修改客户端 将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到...

    今天在调试客户端向服务器传递参数时,参数中的“+”全部变成了空格,原因是URL中默认的将“+”号转义了。

    解决方法如下:

    方法一、修改客户端

    将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了。

    方法二

    修改服务器端,将空格替换为“+”,这种方式只适用于参数中有‍“+”没有空格的情况。

    例子:

    String a = reuqest.‍getParameter("clientStr")‍.replace(' ','+');

     

    转载于:https://www.cnblogs.com/wdw31210/p/5820953.html

    展开全文
  • 问题:URL参数中加号“+”变成空格“ ”一、现象URL如:http://example.****.com/controller/action?param=rice+cook+panda后端通过Request.QueryString["param"]的方式获取值的时候,数值中的加号“+”会转换为空格...

    问题:URL参数中加号“+”变成空格“ ”

    一、现象

    URL如:http://example.****.com/controller/action?param=rice+cook+panda

    后端通过Request.QueryString["param"]的方式获取值的时候,数值中的加号“+”会转换为空格“ ”

    例如传输“rice+cook+panda”,就会取到“rice cook panda”

    二、原因

    W3C标准规定,当Content-Type为application/x-www-form-urlencoded时,URL中查询参数名和参数值中空格要用加号+替代,所以几乎所有使用该规范的浏览器在表单提交后,URL查询参数中空格都会被编成加号+。

    而在另一份规范RFC2396,定义URI里, URI里的保留字符都需转义成%HH格式(Section 3.4 Query Component),因此空格会被编码成%20,加号+本身也作为保留字而被编成%2B,对于某些遵循RFC 2396标准的应用来说,它可能不接受查询字符串中出现加号+,认为它是非法字符。

    所以一个安全的举措是URL中统一使用%20来编码空格字符。

    三、解决思路和方法

    了解了原因,解决就针对出现这种情况的原因做处理。

    处理思路:将URL中的+号替换为%2B

    处理后的URL应为:http://example.****.com/controller/action?param=rice%2Bcook%2Bpanda

    1、发送端处理办法

    不同的编程语言对此类问题解决方法,大同小异,最终目的都是将参数内的加号“+”替换为%2B:

    Java解决方法(推荐)

    URLEncoder.encode("rice+cook+panda","UTF-8");

    C#解决方法(推荐)

    HttpUtility.UrlEncode("rice+cook+panda");

    Server.UrlEncode("rice+cook+panda")

    JS解决方法(推荐)

    encodeURIComponent("rice+cook+panda")

    通用笨方法(不推荐):将参数内的+号采用repace函数替换为%2B

    2、接收端处理办法

    此问题原因出在发送端,所以不建议在接收端做特殊处理。

    特殊情况下(只针对某单个URL的参数临时应急):接收端处理方法,可强制将获取参数内的空格变为加号" "通过Replace方法“ ”替换为+号(不推荐使用,这个就是坑)

    四、问题拓展延伸

    这个提问,主要是URL对参数内的特殊符号进行了特殊处理导致,+号有这种情况,自然其他特殊符号也存在类似情况 如: / = 等。

    因此推荐采用各种编程语言内部处理url的函数来解决此类问题,不建议采用发现一个替换一个的方式,更不建议接收端做特殊处理。

    展开全文
  • 将以下地址请求服务器时,如果postUrl中某个参数值包含符号+ 那么在服务器获取到这个参数值时,其加号变成了一个空格。 NSString *postUrl = "http地址"; postUrl = [postUrl ...

    一、背景。

    将以下地址请求服务器时,如果postUrl中某个参数值包含符号+  那么在服务器获取到这个参数值时,其加号变成了一个空格。

    NSString *postUrl = "http地址";
    postUrl = [postUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];


    二、原因。

    是因为当这个地址进行以上编码时并没有对加号进行处理,正常情况下地址中的加号应该被转码成%2B


    三、解决方法。

    [postUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]已经是IOS过时的方法,应该是存在问题的,所以IOS不建议用。

    应该采用方法:

    postUrl = [postUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"#%<>[\\]^`{|}\"]+"].invertedSet];

    其中方法[NSCharacterSet characterSetWithCharactersInString:@"#%<>[\\]^`{|}\"]+"]中的字符串"【#%<>[\\]^`{|}\"]+】用户可自定义,代表的意思是需要对这些特殊字符进行转码。里面包含了加号,当然就没问题了。

    【扩展】

    除了自定义,IOS也提供了几个枚举值,代表的特殊字符以及调用方法如下:

    URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}
    URLHostAllowedCharacterSet      "#%/<>?@\^`{|}
    URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}
    URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}
    URLQueryAllowedCharacterSet     "#%<>[\]^`{|}
    URLUserAllowedCharacterSet      "#%/:<>?@[\]^`
    调用:

    postUrl = [postUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

    展开全文
  • 将以下地址请求服务器时,如果postUrl中某个参数值包含符号+ 那么在服务器获取到这个参数值时,其加号变成了一个空格。 NSString *postUrl = "http地址";postUrl = [postUrl ...
  • 我们经常会遇到这样的问题,需要将页面上表单的参数传给后台,但是有些时候,参数会因为一些特殊的情况,出现... 加号+问题:解决加号问题的时候,导致加号被当成了空格。 jQuery为我们提供了一个方法$(form).ser...
  • 在当前页面的js中,使用正则将加号‘+’转换: jumpurl = jumpurl.replace(new RegExp("\\+","g"),"%252B");
  • Base64 空格加号问题

    千次阅读 2019-07-25 10:52:53
    app端进行base64加密,内部含有+号,然后进行url加密,+号就变成空格,传给后端,后端进行base64解密,base64解密字符是不能包含空格的,所以报错。 W3C标准规定,当Content-Type为application/x-...
  • js相关:URL的参数中有加号传值变为空格的问题(URL特殊字符)发布于 2020-6-2|复制链接今天在调试客户端向服务器传递参数时,参数中的“+”全部变成空格,原因是URL中默认的将“+”号转义了,经过以下步骤解决了,...
  • URL加号空格

    千次阅读 2017-09-14 10:53:18
    客户端向服务器端传参数,所有的+号变成空格解决方法如下:方法一、修改客户端将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了。$('.download').click(function(e) { ...
  • 空格换成加号(+)3.正斜杠(/)分隔目录和子目录4.问号(?)分隔URL和查询5.百分号(%)制定特殊字符6.#号指定书签7.&号分隔参数转义字符的原因:如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的...
  • 今天我在调程序时,遇到了见郁闷的事,我用ajax从前台显示页面传字符串变量给处理...原因: url中有些字符被转义,比如空格被编码成加号,于是传的参数明明是加号,获取的值却成了空格。如何解决呢?如果是通过url
  • 下载文件名空格加号问题

    万次阅读 2008-12-29 17:14:00
    HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号(+), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格变成加号在用 ...
  • url传递过程中加号空格 在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格。 如11+22接收后变成11 22。 要解决这个问题,需要将加号替换为%2B进行传递。 如11%2B22接收后变成11+22。 这种...
  • 今天遇到个问题,字符串在...于是 var_dump()打印get的参数,对比发现原来的+加号变成空格。 于是在传递前用urlencode()函数进行处理,到另一页面接收后用urldecode()解码,惊奇的发现竟然还是空格,这就奇怪了!
  • url传递过程中加号空格在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格。 如11+22接收后变成11 22。要解决这个问题,需要将加号替换为%2B进行传递。 如11%2B22接收后变成11+22。这种问题...
  • 今天遇到这个问题,在网上找了几个答案,解决了问题,很高兴,所以贴出来给大家分享一下:URL如下Request.QueryString["sql"]后取出的值为and id='300',“+”就消失了,请问这是为什么?应该如何解决呢?_______________...
  • url中关于编解码加号空格的问题

    万次阅读 2017-06-08 22:04:49
    今天遇到一个问题,URL中的加号传到后台之后变成空格 BNn+Y6xKvmejeJmu9sS2OnRJwYhHtYXScG2ol17EUhg1oeSFE5btrT4Eh04QiwIf变成了BNn Y6xKvmejeJmu9sS2OnRJwYhHtYXScG2ol17EUhg1oeSFE5btrT4Eh04QiwIf 原因:URL...
  • php中GET方法加号变成空格

    千次阅读 2017-07-20 18:36:07
    在用POST或者GET传送数据时,如果数据里含有"+"(加号),但接收程序解析数据时,会把这个加号解析成空格。解决办法: 在php里面, 先用str_replace函数,将加号替换成"%2B",然后进行urlencode编码, 在接收方...
  • 今天在调试客户端向服务器传递参数时,参数中的“+”全部变成空格,原因是URL中默认的将“+”号转义了,经过以下步骤解决了,需要的朋友可以参考一下
  • <?php //base64数据在post过程中加号变成空格,这里将空格替换回加号,恢复数据成原来的样子。 function x($base64){ return(str_replace(" ","+",urldecode($base64))); } ?> ...
  • 在用ASP.Net开发页面的时候,我们常常通过System.Web.HttpUtility.UrlEncode和UrlDecode在页面间通过URL传递参数.成对的使用Encode和Decode是没有问题的.但是,我们在编写文件下载的页面的时候,常常用如下方法来指定...
  • $_REQUEST里面获取到的变成空格 (php运行在apache上 这个不知有没有影响) <p>&pwd=JBj7FJVvRI+A urlencode=>&pwd=JBj7FJVvRI%2BA $_REQUEST['pwd'] = &...
  • 使用encodeURIComponent 如str=“a+b”; url=“sql_str.jsp?...今天在调试客户端向服务器传递参数时,参数中的“+”全部变成空格,原因是URL中默认的将“+”号转义了。 解决方法如下: 方法一、修...

空空如也

空空如也

1 2 3 4 5 6
收藏数 109
精华内容 43
关键字:

url空格变成加号