精华内容
下载资源
问答
  • 今天在调试客户端向服务器传递参数时,参数中的“+”全部变成空格,原因是URL中默认的将“+”号转义了,经过以下步骤解决了,需要的朋友可以参考一下
  • http://reason2003.iteye.com/blog/719682 ... URL传参中加号空格的解决方案 URL传参加号变空格的问题,在页面中把+号替换为'% 2B'可以得到解决 str = str.replace(“+”,“% 2B”); ...
    http://reason2003.iteye.com/blog/719682
    
    http://zoumeili.blog.163.com/blog/static/207322112201242423620758/
    URL传参中加号变空格的解决方案

    URL传参加号变空格的问题,在页面中把+号替换为'% 2B'可以得到解决
    str = str.replace(“+”,“% 2B”);
    说明:%和2之间是没有空格的,因为在网页上显示时,会被转义为+号,所以本人加了个空格,实际应用中是没有的。
    希望能解决您的问题。

    需求:上传一个文件后返回文件存储的相对路径、文件名到前台页面
    遇到的问题:当上传文件的文件名中间有空格,用URLEncoder.encode方法会把空格变成加号(+)在前台页面显示的时候会多出加号。比如,上传的文件名为 “新建 文本文档.txt” ,从后台返回值解码后却变成了“新建+文本文档.txt”
    解决方法:在值传回前台时先把变量中的加号(+)全部替换为“%20”。
    str.replace("+","%20")
    注:在开发中还发现了在传输变量值是路径时, 路径中的斜线是:“/”,而不是“\”,否则也不行。
    展开全文
  • URLEncoder关于空格转成加号(+)的问题

    万次阅读 2018-11-01 19:33:56
    所以一个安全的举措是URL中统一使用%20来编码空格字符 那么问题来了,正常情况下空格不应该转换为+,而是转换为%20。 一次经历:服务端按照URLEncoder.encode(str)编码,安卓客户端根据Uri.decode(str)解码,...

    在接口传参过程中,我们通常会把参数内容进行一次编码 ,通过URLEncoder.encode(),如下所示:

    public static void main(String[] args) {
    	String string = "<font color=\\\"#000000\\\"> \\r\\n最低还款金额:                       ¥3,685.17<br>\\r\\n最低还款金额";
    	try {
    		string = URLEncoder.encode(string, Charset.defaultCharset().displayName());
    		//string = string.replaceAll("\\+", "%20");
    		System.out.println(string);
    		String res = URLDecoder.decode(string,Charset.defaultCharset().displayName());
    		System.out.println(res);
    	} catch (UnsupportedEncodingException e) {
    		e.printStackTrace();
    	}	
    }
    

    运行结果如下:

    %3Cfont+color%3D%5C%22%23000000%5C%22%3E+%5Cr%5Cn%E6%9C%80%E4%BD%8E%E8%BF%98%E6%AC%BE%E9%87%91%E9%A2%9D%EF%BC%9A+++++++++++++++++++++++%EF%BF%A53%2C685.17%3Cbr%3E%5Cr%5Cn%E6%9C%80%E4%BD%8E%E8%BF%98%E6%AC%BE%E9%87%91%E9%A2%9D
    <font color=\"#000000\"> \r\n最低还款金额:                       ¥3,685.17<br>\r\n最低还款金额
    

    可以很明显看出来,URLEncoder.encode()方法,默认将需要编码的内容中的空格转换为了+。但是默认通过URLDecoder.decode()方法,可以将转换为+号的内容还原。

    • 此编码与 WWW表单 POST 数据的编码方式是一样的,同时与application/x-www-form-urlencoded的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与RFC1738 编码不同。
    • 另一份规范(RFC 2396,定义URI)里, URI里的保留字符都需转义成%HH格式(Section 3.4 Query Component),因此空格会被编码成%20,加号+本身也作为保留字而被编成%2B,对于某些遵循RFC 2396标准的应用来说,它可能不接受查询字符串中出现加号+,认为它是非法字符。所以一个安全的举措是URL中统一使用%20来编码空格字符

    那么问题来了,正常情况下空格不应该转换为+,而是转换为%20。
    一次经历:服务端按照URLEncoder.encode(str)编码,安卓客户端根据Uri.decode(str)解码,除+之外,所有的字符都解析正确,唯独这个+没有解码为空格,这问题也好解决,安卓客户端使用URLDecoder.decode(str)就可以了,客户端代码改动,需要上线才能解决问题,最好还是服务端解决空格转+问题。其实也很简单。直接将encode之后的结果再做一次统一转换,将+统一改为%20。这样,安卓客户端也不用修改Uri.decode()为URLDecoder.decode()了,而且这类问题就从根本上解决了。

    string = URLEncoder.encode(string, Charset.defaultCharset().displayName());
    string = string.replaceAll("\\+", "%20");
    System.out.println(string);
    
    展开全文
  • 我们经常会遇到这样的问题,需要将页面上表单的参数传给后台,但是有些时候,参数会因为一些特殊的情况,出现... 加号+问题:解决加号问题的时候,导致加号被当成了空格。 jQuery为我们提供了一个方法$(form).ser...

    我们经常会遇到这样的问题,需要将页面上表单的参数传给后台,但是有些时候,参数会因为一些特殊的情况,出现一些转换,导致参数传给后台的时候出现问题。相信大家在前端工作中会遇到这样的问题。

    • 中文问题:前端中文,传给后端时,变成了百分号字母数字组合的URL编码。
    • 空格问题:空格会变成+号。
    • 加号+问题:解决加号问题的时候,导致加号被当成了空格。

    jQuery为我们提供了一个方法$(form).serialize(),可以获取表单的数据,然后这个数据可以直接作为ajax的data参数,直接提交给后台。

    示例如下:这里是一个模拟中文加号和空格的示例。

    <!doctype html>
    <html>
          <head>
    	       <meta charset="UTF-8"/>
    		   <link rel="stylesheet" type="text/css" href="../themes/default/easyui.css"/>
    		   <link rel="stylesheet" type="text/css" href="../themes/icon.css"/>
    		   <link rel="stylesheet" type="text/css" href="../demo/demo.css"/>
    		   <script type="text/javascript" src="../jquery.min.js"></script>
    		   <script type="text/javascript" src="../jquery.easyui.min.js"></script>
    	  </head>
    	  <body>
    	       <div id="container">
    		       <form id="ff">
    		       	   <label>姓名:<input type="text" class="easyui-textbox" name="username"
                         value="张三ad+in"/></label>
    		       	   <label>电话:<input type="text" class="easyui-textbox" name="mobile" 
                         value="150  186301"/></label>
    		       	   <input type="button" class="easyui-linkbutton" value="submit" 
                        onclick="save()" style="height:30px;width:80px;"/>
    		       </form>
    		   </div>
    		   <script type="text/javascript">
    		      function save(){
    		      	var formdata = $("#ff").serialize();
    		      	console.log(formdata);
    		      	$.ajax({
    		      		url:"http://127.0.0.1:9080/user/list",
    		      		type:'get',
    		      		data:formdata,
    		      		success:function(data){
    		      			console.log(data);
    		      		}
    		      	});
    		      }
    		   </script>
    	  </body>
    </html>

    默认情况下,参数不会出现以上三个中的任何问题。

    这种直接把$().serialize()的结果当做参数提交的方式,大多数能够满足我们的要求,但是有时候在查询的时候,表单提交的参数,我们需要过滤掉为空的参数,或者增加额外的参数,比如分页信息page,size,排序字段sortName等。这个时候,我们需要把$().serialize()的的结果,解析为一个对象。解析的过程中,会遇到问题。

    我们知道,$().serialize()的结果是一个参数按照key=value的方式使用&拼接的字符串。如:

     

    这样按照普通的分割字符串的方式,我们可以将form表单的参数按照"&"分割,再按照"="分割,就可以得到我们想要的结果。

    function getFormData(id){
    	var ff = document.getElementById(id);
    	var data = $(ff).serialize();
    	console.log(data);
    	var res = {};
    	var kpair = data&&data.split("&");
    	$(kpair).each(function(index,item){
    		   var key = item.split("=")[0];
    		   var value = item.split("=")[1];
    		   res[key] = value;
    	});
    	return res;
    }

    这种方式,看似没有问题,却会导致前面提到过的三个问题。

    后台接收到的参数变为了:User(username=%E5%BC%A0%E4%B8%89ad%2Bin, password=null, mobile=150++186301)

    为了解决这三个问题,我们需要三行代码。分别解决这三个问题。

    data = decodeURI(data); //这一句解决中文问题
    data = data.replace(/\+/g," "); //这一句解决空格变为+的问题
    data = data.replace(/%2B/g,"+"); //这一句解决加号变为%2B的问题

    这样,就彻底解决了参数传递的问题。

    此外,如果还有特殊字符,可以追加,比如data=data.replace(/%3F/g,"?")。

    这里贴出完整的示例:

    <!doctype html>
    <html>
          <head>
    	       <meta charset="UTF-8"/>
    		   <link rel="stylesheet" type="text/css" href="../themes/default/easyui.css"/>
    		   <link rel="stylesheet" type="text/css" href="../themes/icon.css"/>
    		   <link rel="stylesheet" type="text/css" href="../demo/demo.css"/>
    		   <script type="text/javascript" src="../jquery.min.js"></script>
    		   <script type="text/javascript" src="../jquery.easyui.min.js"></script>
    	  </head>
    	  <body>
    	       <div id="container">
    		       <form id="ff">
    		       	   <label>姓名:<input type="text" class="easyui-textbox" name="
    		       	   	username" value="张三ad+in"/></label>
    		       	   <label>电话:<input type="text" class="easyui-textbox" name="
    		       	   	mobile" value="150  186301"/></label>
    		       	   <input type="button" class="easyui-linkbutton" value="submit" 
    		       	   onclick="save()" style="height:30px;width:80px;"/>
    		       </form>
    		   </div>
    		   <script type="text/javascript">
    		      function save(){
    		      	var formdata = getFormData("ff");
    		      	console.log(formdata);
    		      	$.ajax({
    		      		url:"http://127.0.0.1:9080/user/list",
    		      		type:'get',
    		      		data:formdata,
    		      		success:function(data){
    		      			console.log(data);
    		      		}
    		      	});
    		      }
    		      function getFormData(id){
    		      	var ff = document.getElementById(id);
    		      	var data = $(ff).serialize();
    		      	data = decodeURI(data);
    		      	data = data.replace(/\+/g," ");
    		      	data = data.replace(/%2B/g,"+");
    		      	data = data.replace(/%3F/g,"?");
    		      	var res = {};
    		      	var kpair = data&&data.split("&");
    		      	$(kpair).each(function(index,item){
    		      		var key = item.split("=")[0];
    		      		var value = item.split("=")[1];
    		      		res[key] = value;
    		      	});
    		      	return res;
    		      }
    		   </script>
    	  </body>
    </html>

     

    展开全文
  • 今天在写post的时候,post的数据是用加号拼的一个字符串然后在服务上我要split分成数组可是怎么也没有成功然后我打印出字符串竟然没有+号了,变成空格了我还以为是+写成什么特殊的显示不出来了呢我直接服务客户端的+...
    今天在写post的时候,post的数据是用加号拼的一个字符串然后在服务上我要split分成数组可是怎么也没有成功

    然后我打印出字符串竟然没有+号了,变成空格了

    我还以为是+写成什么特殊的显示不出来了呢

    我直接服务客户端的+号,还是不行

    实在没办法了,这时我想看看这到底试什么字符charCodeAt显示这字符的ascii码,是32是空格呢,怎么转化了啊

    post上来的试json格式我第一个想到的是json对+有特殊意义,网上查了没什么

    后来发现urlencode什么的会转化掉

    这时我才想到我在接受post数据的时候用户了querstring的parse这个会转的

    这样就合理,记录一下防止下次忘了

    原网页 http://www.web-jia.com/view.php?a=36

     

    jQuery之父访谈录:JavaScript和HTML一样长寿
    全面学习PHP数组初始化原理
    云端JavaScript漫游指南(视频)
    JavaScript框架的选择标准
    PHP中的数据类型(1)
    整合Apache中JSP和PHP
    实例讲解PHP5 新特性(1)
    Jscex模拟重力场与google苹果logo的比较
    PHP 5.3新版特性浅析(1)
    PHP中的常量
    5.6 Stuff and Nonsense:创建一个更好的切换器(1)
    有关HTML 5的流言与真相(1)

    转载于:https://www.cnblogs.com/hongyi1159/p/6798493.html

    展开全文
  • URLEncoder.encode转译后“空格”变“加号...对字符串test进行编码,但是发现空格全部都变成加号 test = URLEncoder.encode(test); test = test.replaceAll(&amp;quot;\+&amp;quot;, “%20”); //处理空...
  • 在使用URLEncoder.encode(path)构建URL请求时,把path中的空格解析为加号(+) String path="测试 路径"; String finalPath=URLEncoder.encode(path, "UTF-8") ; System.out.println(finalPath); %E6%B5%8B%E8%...
  • 在当前页面的js中,使用正则将加号‘+’转换: jumpurl = jumpurl.replace(new RegExp("\\+","g"),"%252B");
  • 在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗? 测试: string file="文件上(传)篇.doc"; string Server_UrlEncode=Server.UrlEncode(file); string Server_UrlDecod
  • 经过urldecode之后再base64解密发现数据乱码,打印之后发现是urldecode之后的字符串中的+被解析成了空格导致解密错误 $raw = file_get_contents("php://input"); ##解密url parse_str(rawurldecode($raw), $arr);...
  • 今天在调试客户端向服务器传递参数时,参数中的“+”全部变成空格,原因是URL中默认的将“+”号转义了。 解决方法如下: 方法一、修改客户端 将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到...
  • 今天遇到个问题,字符串在...于是 var_dump()打印get的参数,对比发现原来的+加号变成空格。 于是在传递前用urlencode()函数进行处理,到另一页面接收后用urldecode()解码,惊奇的发现竟然还是空格,这就奇怪了!
  • url传递过程中加号空格 在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格。 如11+22接收后变成11 22。 要解决这个问题,需要将加号替换为%2B进行传递。 如11%2B22接收后变成11+22。 这种...
  • HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格变成加号。...
  • 空格url编码后,会用+号替换原来位置的空格 加号(+):url编码后,会用%2替换原来位置的+ form表单提交,默认是application/x-www-form-urlencoded,因此会对参数进行urlencode http请求传输参数 http传输...
  • url中关于编解码加号空格的问题

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

    千次阅读 2017-09-14 10:53:18
    客户端向服务器端传参数,所有的+号变成空格解决方法如下:方法一、修改客户端将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了。$('.download').click(function(e) { ...
  • url传递过程中加号空格在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格。 如11+22接收后变成11 22。要解决这个问题,需要将加号替换为%2B进行传递。 如11%2B22接收后变成11+22。这种问题...
  • java“空格”变“加号”的问题的解决方案;URLEncoder.encode ... dst_fname=URLEncoder.encode(dst_fname);...对字符串dst_fname进行编码,但是发现空格全部都变成加号 dst_fname=URLEncoder.encode(dst_...
  • 当我们在url中传递的参数带有加号+,会被浏览器转换成空格,这样会导致后台获取到无效的参数,例如: var name = a+b; window.location.href = ctx + "/companyRiskPreview/toRiskScanView?name=" + ...
  • 1,URL传参中加号空格的解决方案 URL传参加号变空格的问题,在页面中把+号替换为’% 2B’可以得到解决 str = str.replace(“+”,“% 2B”); 说明:%和2之间是没有空格的,因为在网页上显示时,会被转义为+号,所以...
  • URLEncoder.encode转译后“空格”变“加号”的问题的解决方案
  • 下载文件名空格加号的问题

    千次阅读 2017-03-24 16:52:35
    最近开发发现下载文件时,返回前端名字中空格变成了+ ,查询发现URLEncoder.encode的问题( fileName= URLEncoder.encode(fileName, "UTF-8");),以前用的时候也没注意过,网上很多办法都是吧加号替换为%20, ...
  • iOS URL编码加号空格

    千次阅读 2016-03-05 18:58:26
    iOS项目中访问HTTP时需要对URL进行编码,我之前一直使用stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)进行编码,但目前这个方法会有黄色叹号,提示这个方法已经废弃,请使用...
  • 在请求中如果url包括特殊字符的话,可能会导致接口接收参数失败(例:空格 被转换成 + 号),所以前端一般会对特殊字符进行encode encodeURI 对一个完整的URI 进行编码, 而encodeURIComponent对URI 的一个组件(单个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,061
精华内容 1,224
关键字:

url空格变成加号