URL 传+号到后台变空格问题解决方案

今天巧合遇到这个问题,下面是网上找的解决方案。

原文:http://blog.sina.com.cn/s/blog_a0949eec01010xta.html

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

解决方法如下:

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

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

例子:

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

如果客户端为clientStr=test+OK,那么a的值为test+OK;

方法三、修改服务器端,将获取参数的方法由‍reuqest.‍getParameter改为‍request.getQueryString().substring(0),然后对得到的字符串进行解析。

例子:

‍‍String a =request.getQueryString().substring(0);

‍如果客户端为clientStr=test+OK,那么a的值为‍clientStr=test+OK,需要再解析一下,

a=a.‍substring(10);得到a的值为‍test+OK。

附:一个JS,用来转义URL中特殊字符的。

‍function URLencode(sStr)
{
    return escape(sStr).replace(/\+/g, ‘+‘).replace(/\"/g,‘"‘).replace(/\‘/g, ‘‘‘).replace(/\//g,‘/‘);
}

还一种方案

strURL = "search.do?param=" + encodeURIComponent(str);

普通的传参出现乱码问题,可使用encodeURI来转译,它会转译成UTF-8的格式;
strURL = "search.do?param=" + encodeURI(str);

时间: 2024-10-31 01:51:37

URL 传+号到后台变空格问题解决方案的相关文章

转!!URL 传+号到后台变空格问题解决方案

网上很多解决方法,但是前提是get请求(或者是post请求后面追加的参数),让我试了很久(我是post),没成功!引以为戒!! 今天在调试客户端向服务器传递参数时,参数中的“+”全部变成了空格,原因是URL中默认的将“+”号转义了. 解决方法如下: 方法一.修改客户端,将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了. 方法二.修改服务器端,将空格替换为“+”,这种方式只适用于参数中有‍“+”没有空格的情况. 例子: String a = reuqe

jsp中 url传参到后台的参数获取

datagrid传值url方法1:<input type="hidden" id="sortid"> <table id="dg" class="easyui-datagrid" title="标题" data-options="iconCls: 'icon-save',singleSelect: false,sortOrder:'desc',toolbar: '#tb',idF

asp.net 页面通过URL传参中文乱码的三种解决方案

1.编码 string state=Server.UrlEncode(stateName.Text.Trim());Response.Redirect("aaa.aspx?state="+state+""); 2.解码(aaa.aspx) string state= Server.UrlDecode(Request.QueryString["state"].ToString()); 是GB2312编码的,参数传值是UTF-8编码的 解决的方法一般

url传输中+转为%2B取到变空格的问题

一个加密串,通过url传过来后怎么也解密不了. 原串: h1tQYMmnx7jdvowi9KnaEM5dHfamJ+rbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQUq7m42SpNbmDgtK11SzA9N4tvuBDpAaR1axfBJWXBLT20dy7FtYvXIPMLwnSMx/v2j0KkjHvrY= urlencode后的串: h1tQYMmnx7jdvowi9KnaEM5dHfamJ%2brbaRnvhwhUmRAvyxpA2AGzszx5k9K0qdhiQ

URL传含特殊字符参数的问题

[故障引起的故事]URL中带加号的处理 来源: http://agapple.iteye.com/blog/773061 html   javaScript  Http协议 问题起因:      URL传参,因为此种方式传参是可视的(http://xxx/xxx?jobnum=SH0721),考虑到安全性,对参数部分进行了加密处理(http://xxx/xxx?jobnum=tNOb6+SinJs=)后参数出现了特殊符号, 而在服务端接受到对应的请求参数时,发现参数值 为“tNOb6+SinJs

URL传中文参数导致乱码的解决方案之encodeURI

通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码问题,解决方案有很多种,本文主要介绍如何通过encodeURI来解决中文乱码问题: first:前端传递参数的时候需要对中文参数进行两次encodeURI处理: ?var requestUrl = 'url?roleName='+encodeURI(encodeURI("rowObj.appName")); 注:rowObj.appName?表示即将传到后台的带中文的字符串 ?second:在服务器端后台程序代码中要用java

url 传参

php 支持 url 传参的形式 调用后台php文件,如: 1 <a href='process.php?action=download&id=$id'>下载</a> 在后台process.php文件中,可通过$_GET[]方式获取参数: 1 <?php 2 if(@$_GET["action"] == "download"){ //检测此action 3 ... 4 } 5 ?> 值得注意的是: 要小心参数可能包含' '

关于url传参中文乱码问题

之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题.所以一直没有了解中文乱码的问题. 问题描述: 地址: http://localhost:8080/sun-government/contest/get_teams_by_type_with_page?typeName=新材料 当在windows 跑 myeclipse的命令台  能正确打印出typeName的参数,而且持久层并没有问题. 当在 linux 跑catalina模式  打印出乱码,持久层也是乱码. 百度了好几个好几

thinkphp中URL传参数的几种方式

在thinkphp中,url传参合asp.net中原理类似,下面就单个参数和多个参数传递方式进行一个简单讲解 1.传单个参数 单个参数这种比较简单,例如 想像edit操作里面传递一个id值,如下写法__URL__/edit/id/1 http://localhost/index.php/user/edit/id/1 id和其值1要分别位于/后面 后台获取id通过    $id=$_GET['id']   即可获取其具体值. 2.传多个参数 传多个参数相对比较麻烦一点,可以通过两种方式 第一种:传