`
zhpengfei0915
  • 浏览: 65812 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

在传参时,url参数中包含+、空格、=、%、&、#等特殊符号的处理

阅读更多

最近在工作中遇到一些问题,就是如果表单中填写一些特殊字符,使用url向后台传参的时候会遇到问题,就是比如"#$%^&*()+"等特殊字符传不到后台,查了一些资料,整理下,供参考

首先可以先将特殊字符转码为16进制的对应的转码为

  1. url参数中有+、空格、=、%、&、#等特殊符号的问题解决?
  2. 解决办法:
  3. 将这些字符转化成服务器可以识别的字符,对应关系如下:
  4. URL字符转义
  5. +URL中+号表示空格%2B
  6. 空格URL中的空格可以用+号或者编码%20
  7. /分隔目录和子目录%2F
  8. ?分隔实际的URL和参数%3F
  9. %指定特殊字符%25
  10. #表示书签%23
  11. &URL中指定的参数间的分隔符%26
  12. =URL中指定参数的值%3D
  13. 看看实例:
  14. <inputtype="button"value="aaa"id="btn_submit">
  15. <script>
  16. (function(){
  17. $("#btn_submit").click(function(){
  18. $.post("index.php/Layout/urlDemo",{
  19. id:2,
  20. sex:'&male'
  21. },function(data){
  22. console.log("Firstpost:"+data);
  23. $.post("index.php/Layout/urlDemo?id=2&sex=&male",{},function(data){
  24. console.log("Secondpost:"+data);
  25. $.get("index.php/Layout/urlDemo",{
  26. id:2,
  27. sex:'&male'
  28. },function(data){
  29. console.log("Firstget:"+data);
  30. $.get("index.php/Layout/urlDemo?id=2&sex=&male",{},function(data){
  31. console.log("Secondget:"+data);
  32. });
  33. });
  34. });
  35. });
  36. });
  37. })(jQuery);
  38. </script>
  39. PHP中Action:
  40. classLayoutActionextendsAction{
  41. publicfunctionurlDemo(){
  42. //此处PHP并没有执行解码
  43. echo"id=".$_REQUEST['id'].";性别=".$_REQUEST['sex'];
  44. }
  45. }
  46. 结果如下图1:


  1. 转码后:
  2. <script>
  3. (function(){
  4. $("#btn_submit").click(function(){
  5. $.post("index.php/Layout/urlDemo",{
  6. id:2,
  7. sex:'&male'
  8. },function(data){
  9. console.log("Firstpost:"+data);
  10. $.post("index.php/Layout/urlDemo?id=2&sex="+encodeURIComponent('&male'),{},function(data){
  11. console.log("Secondpost:"+data);
  12. $.get("index.php/Layout/urlDemo",{
  13. id:2,
  14. sex:'&male'
  15. },function(data){
  16. console.log("Firstget:"+data);
  17. $.get("index.php/Layout/urlDemo?id=2&sex="+encodeURIComponent('&male'),{},function(data){
  18. console.log("Secondget:"+data);
  19. });
  20. });
  21. });
  22. });
  23. });
  24. })(jQuery);
  25. </script>
  26. 结果如下图2:


  1. jQueryajax封装的get()和post(),已经对特殊字符"&"等做了处理:
  2. 看看如下正则:
  3. rprotocol=/^\/\//,
  4. rquery=/\?/,
  5. rscript=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
  6. rselectTextarea=/^(?:select|textarea)/i,
  7. rspacesAjax=/\s+/,
  8. rts=/([?&])_=[^&]*/,
  9. rurl=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;
  10. //tryreplacing_=ifitisthere
  11. ret=s.url.replace(rts,"$1_="+ts);
  12. //ifnothingwasreplaced,addtimestamptotheend
  13. s.url=ret+((ret===s.url)?(rquery.test(s.url)?"&":"?")+"_="+ts:"");
  14. 最后附:
  15. javascript编码和解码函数:
  16. 1)encodeURI():
  17. a>主要用于整个URI
  18. b>对空格进行编码
  19. c>不会对本身属于URI的特殊字符进行编码,例如":","/","?","#"
  20. 2)encodeURIComponent():
  21. a>主要用于URI中的某一段
  22. b>会对发现的任何非标准字符进行编码
  23. 3)escape():
  24. a>不会对ASCII字母和数字进行编码,
  25. b>不会对下面这些ASCII标点符号进行编码:*@-_+./
  26. c>其他所有的字符都会被转义序列替换。
  27. d>ECMAScriptv3反对使用该方法,应用使用decodeURI()和decodeURIComponent()替代它。
  28. <scripttype="text/javascript">
  29. //Visit%20W3@@@School%21
  30. console.log(escape("VisitW3@@@School!"));
  31. //%3F%21%3D%28%29%23%25%26
  32. console.log(escape("?!=()#%&"))
  33. </script>


分享到:
评论

相关推荐

    url参数中有+、空格、=、%、、#等特殊符号的问题解决

    ,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它字符替代吧,或用全角的。 + URL 中+号表示空格...

    url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决

    url参数中有+、空格、=、%、&、#等特殊符号的问题解决,需要的朋友可以参考一下

    两种方法解决javascript url post 特殊字符转义 + & #

    最近在用url 传特殊字符的时候发现数据丢失了。 其实不是丢失,比如 ‘+’它会当成连接字符来处理了。 一、替换成16进制字符,在这列几个常用的转换 + 空格 / ? % & = # + / ? % & &3D # 复制代码 代码...

    当fscanf()遇到空格怎么办?

    当fscanf()遇到空格怎么办? 以下就是一个例子 #include #include int main() { FILE *fpw=fopen&#40;"data1.txt","w"&#41;; if(fpw==NULL) { return 0; } char s[20]; gets(s); fprintf(fpw,"%s",s); ...

    JS过滤url参数特殊字符的实现方法

    在URL传递参数中,有一些特殊字符,而这些些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码十六进制值 1. + URL 中+号表示空格 + 2. ...

    js中eval&#40;&#41;函数和trim()去掉字符串左右空格应用

    对于js中eval&#40;&#41;函数的理解和写一个函数trim()去掉字符串左右空格。 trim()是参照了jquery的源码,你可以放心使用。 对于js中eval&#40;... js中处理字符串过滤前后空格的trim函数是没有的, 而jqu

    URL的参数中有加号传值变为空格的问题(URL特殊字符)

    如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如 表单的action为list.jsf?act=Go&state=5 则提交时通过request....

    js判断输入字符串是否为空、空格、null的方法总结

    判断字符串是否为“空”字符即用户输入了空格 var strings = ' '; if (strings.replace(/(^s*)|(s*$)/g, ).length ==0) { alert&#40;'不能为空'&#41;; } 判断输入字符串是否为空或者全部都是空格 function is...

    秀丸的宏(排序用的)

    question $dellinenum + $delspcnum + $sorted + "所 要 時 間:" + $minute + str(#second) + "秒" + str( #time % 1000 ) + "\n\n確定しますか?"; if( result == no ) call Cancel; writeininum $inifile, ...

    C语言中system&#40;&#41;执行cmd命令打开关闭程序的方法

    函数原型: int system&#40;char *command&#41;...注意如果路径中有空格,需要对整个路径添加双引号 2.关闭程序 system&#40;"TASKKILL /F /IM iexplore.exe"&#41;; 3.查看帮助 &gt;HELP &gt;TASKKILL /?

    19个必须知道的Visual Studio快捷键

    本文将为大家列出在 Visual Studio 中常用的快捷键,正确熟练地使用快捷键,将大大提高你的编程工作效率。 项目相关的快捷键  Ctrl + Shift + B = 生成项目  Ctrl + Alt + L = 显示 Solution Explorer(解决方案...

    swift-url分类解决URL里面的空格中文及其他特殊字符问题

    url分类解决URL里面的空格、中文、及其他特殊字符问题

    jquery获取URL中参数解决中文乱码问题的两种方法

    从A页面通过url传参到B页面时,获取URL中参数出现中文乱码问题,解析url参数的正确方法如下,感兴趣的朋友可以参考下

    在win8、win10下使用Ctrl+空格切换输入法

    在win8、win10下使用Ctrl+空格切换输入法。用习惯xp、win7的朋友肯定和我一样不习惯win8的切换键,我写了个小脚本,将原来的切换按键 左边win键+空格键映射为左边ctrl+空格

    HTML实体字符集

    空格 &nbsp; &#160; 小于号 &lt; &#60; &gt; 大于号 &gt; &#62; & 和号 &amp; &#38; " 引号 &quot; &#34; ' 撇号 &apos; (IE不支持) &#39; ' 单引号:''' (single quote) &#039; 其他一些常用的字符实体 显示结果 描述...

    win10 使用ctrl+空格切换输入法

    win10使用win+空格进行语言切换,很不习惯,这个小程序,可以把ctrl+空格注册为系统热键,ctrl+空格就可以替代win+空格进行输入法切换。把程序加入到系统的计划任务中,每次开机都自动加载;即可以使用

    url 特殊字符 传递参数解决方法

    空格 URL中的空格可以用+号或者编码 3. / 分隔目录和子目录 / 4. ? 分隔实际的 URL 和参数 ? 5. % 指定特殊字符 % 6. # 表示书签 # 7. & URL 中指定的参数间的分隔符 & 8. = URL 中指定参数的值 = 解决的方法:...

    GET 方式提交的含有特殊字符的参数

    如我在连接&lt;a&gt;A&T Plastic,在接受参数的时候就没办法读取name参数的正确值,怎么样才能正确读取,还有其他的特殊字符 字符 特殊字符的含义 URL编码 # 用来标志特定的文档位置 # % 对特殊字符进行编码 % & 分隔不同...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    java调用shell向DataX传递参数,where条件,包含特殊字符。java调用shell向DataX传递参数,where条件,包含特殊字符

Global site tag (gtag.js) - Google Analytics