最近在工作中遇到一些问题,就是如果表单中填写一些特殊字符,使用url向后台传参的时候会遇到问题,就是比如"#$%^&*()+"等特殊字符传不到后台,查了一些资料,整理下,供参考
首先可以先将特殊字符转码为16进制的对应的转码为
-
url参数中有+、空格、=、%、&、#等特殊符号的问题解决?
-
解决办法:
-
将这些字符转化成服务器可以识别的字符,对应关系如下:
-
URL字符转义
-
-
+URL中+号表示空格%2B
-
空格URL中的空格可以用+号或者编码%20
-
/分隔目录和子目录%2F
-
?分隔实际的URL和参数%3F
-
%指定特殊字符%25
-
#表示书签%23
-
&URL中指定的参数间的分隔符%26
-
=URL中指定参数的值%3D
-
-
看看实例:
-
<inputtype="button"value="aaa"id="btn_submit">
-
<script>
-
(function(){
-
$("#btn_submit").click(function(){
-
$.post("index.php/Layout/urlDemo",{
-
id:2,
-
sex:'&male'
-
},function(data){
-
console.log("Firstpost:"+data);
-
$.post("index.php/Layout/urlDemo?id=2&sex=&male",{},function(data){
-
console.log("Secondpost:"+data);
-
$.get("index.php/Layout/urlDemo",{
-
id:2,
-
sex:'&male'
-
},function(data){
-
console.log("Firstget:"+data);
-
$.get("index.php/Layout/urlDemo?id=2&sex=&male",{},function(data){
-
console.log("Secondget:"+data);
-
});
-
});
-
});
-
});
-
});
-
-
})(jQuery);
-
</script>
-
-
PHP中Action:
-
classLayoutActionextendsAction{
-
publicfunctionurlDemo(){
-
//此处PHP并没有执行解码
-
echo"id=".$_REQUEST['id'].";性别=".$_REQUEST['sex'];
-
}
-
}
-
结果如下图1:
-
转码后:
-
<script>
-
(function(){
-
$("#btn_submit").click(function(){
-
$.post("index.php/Layout/urlDemo",{
-
id:2,
-
sex:'&male'
-
},function(data){
-
console.log("Firstpost:"+data);
-
-
$.post("index.php/Layout/urlDemo?id=2&sex="+encodeURIComponent('&male'),{},function(data){
-
console.log("Secondpost:"+data);
-
$.get("index.php/Layout/urlDemo",{
-
id:2,
-
sex:'&male'
-
},function(data){
-
console.log("Firstget:"+data);
-
-
$.get("index.php/Layout/urlDemo?id=2&sex="+encodeURIComponent('&male'),{},function(data){
-
console.log("Secondget:"+data);
-
});
-
});
-
});
-
});
-
});
-
})(jQuery);
-
</script>
-
结果如下图2:
-
jQueryajax封装的get()和post(),已经对特殊字符"&"等做了处理:
-
看看如下正则:
-
rprotocol=/^\/\//,
-
rquery=/\?/,
-
rscript=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
-
rselectTextarea=/^(?:select|textarea)/i,
-
rspacesAjax=/\s+/,
-
rts=/([?&])_=[^&]*/,
-
rurl=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;
-
-
//tryreplacing_=ifitisthere
-
ret=s.url.replace(rts,"$1_="+ts);
-
//ifnothingwasreplaced,addtimestamptotheend
-
s.url=ret+((ret===s.url)?(rquery.test(s.url)?"&":"?")+"_="+ts:"");
-
最后附:
-
javascript编码和解码函数:
-
-
1)encodeURI():
-
a>主要用于整个URI
-
b>对空格进行编码
-
c>不会对本身属于URI的特殊字符进行编码,例如":","/","?","#"
-
-
2)encodeURIComponent():
-
a>主要用于URI中的某一段
-
b>会对发现的任何非标准字符进行编码
-
-
3)escape():
-
a>不会对ASCII字母和数字进行编码,
-
b>不会对下面这些ASCII标点符号进行编码:*@-_+./
-
c>其他所有的字符都会被转义序列替换。
-
d>ECMAScriptv3反对使用该方法,应用使用decodeURI()和decodeURIComponent()替代它。
-
<scripttype="text/javascript">
-
//Visit%20W3@@@School%21
-
console.log(escape("VisitW3@@@School!"));
-
//%3F%21%3D%28%29%23%25%26
-
console.log(escape("?!=()#%&"))
-
</script>
分享到:
相关推荐
,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它字符替代吧,或用全角的。 + URL 中+号表示空格...
url参数中有+、空格、=、%、&、#等特殊符号的问题解决,需要的朋友可以参考一下
最近在用url 传特殊字符的时候发现数据丢失了。 其实不是丢失,比如 ‘+’它会当成连接字符来处理了。 一、替换成16进制字符,在这列几个常用的转换 + 空格 / ? % & = # + / ? % & &3D # 复制代码 代码...
当fscanf()遇到空格怎么办? 以下就是一个例子 #include #include int main() { FILE *fpw=fopen("data1.txt","w"); if(fpw==NULL) { return 0; } char s[20]; gets(s); fprintf(fpw,"%s",s); ...
在URL传递参数中,有一些特殊字符,而这些些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码十六进制值 1. + URL 中+号表示空格 + 2. ...
对于js中eval()函数的理解和写一个函数trim()去掉字符串左右空格。 trim()是参照了jquery的源码,你可以放心使用。 对于js中eval(... js中处理字符串过滤前后空格的trim函数是没有的, 而jqu
如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如 表单的action为list.jsf?act=Go&state=5 则提交时通过request....
判断字符串是否为“空”字符即用户输入了空格 var strings = ' '; if (strings.replace(/(^s*)|(s*$)/g, ).length ==0) { alert('不能为空'); } 判断输入字符串是否为空或者全部都是空格 function is...
question $dellinenum + $delspcnum + $sorted + "所 要 時 間:" + $minute + str(#second) + "秒" + str( #time % 1000 ) + "\n\n確定しますか?"; if( result == no ) call Cancel; writeininum $inifile, ...
函数原型: int system(char *command)...注意如果路径中有空格,需要对整个路径添加双引号 2.关闭程序 system("TASKKILL /F /IM iexplore.exe"); 3.查看帮助 >HELP >TASKKILL /?
本文将为大家列出在 Visual Studio 中常用的快捷键,正确熟练地使用快捷键,将大大提高你的编程工作效率。 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = 显示 Solution Explorer(解决方案...
url分类解决URL里面的空格、中文、及其他特殊字符问题
从A页面通过url传参到B页面时,获取URL中参数出现中文乱码问题,解析url参数的正确方法如下,感兴趣的朋友可以参考下
在win8、win10下使用Ctrl+空格切换输入法。用习惯xp、win7的朋友肯定和我一样不习惯win8的切换键,我写了个小脚本,将原来的切换按键 左边win键+空格键映射为左边ctrl+空格
空格   小于号 < < > 大于号 > > & 和号 & & " 引号 " " ' 撇号 ' (IE不支持) ' ' 单引号:''' (single quote) ' 其他一些常用的字符实体 显示结果 描述...
win10使用win+空格进行语言切换,很不习惯,这个小程序,可以把ctrl+空格注册为系统热键,ctrl+空格就可以替代win+空格进行输入法切换。把程序加入到系统的计划任务中,每次开机都自动加载;即可以使用
空格 URL中的空格可以用+号或者编码 3. / 分隔目录和子目录 / 4. ? 分隔实际的 URL 和参数 ? 5. % 指定特殊字符 % 6. # 表示书签 # 7. & URL 中指定的参数间的分隔符 & 8. = URL 中指定参数的值 = 解决的方法:...
如我在连接<a>A&T Plastic,在接受参数的时候就没办法读取name参数的正确值,怎么样才能正确读取,还有其他的特殊字符 字符 特殊字符的含义 URL编码 # 用来标志特定的文档位置 # % 对特殊字符进行编码 % & 分隔不同...
java调用shell向DataX传递参数,where条件,包含特殊字符。java调用shell向DataX传递参数,where条件,包含特殊字符