`
zhpengfei0915
  • 浏览: 70517 次
  • 性别: 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 中+号表示空格...

    &#或&#x转中文.zip

    在HTML中,“#”后的数字或“x”后的十六进制数字代表Unicode编码,这些编码可以用来表示各种字符,包括非ASCII字符,如空格或其他特殊符号。 标签“web”进一步确认了这个主题与Web开发技术相关。 压缩包内的文件...

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

    但如果服务器没有正确处理URL编码,或者你直接在URL中使用特殊符号而没有编码,就可能导致参数解析错误。 为了避免这些问题,开发者应当确保在构造URL参数时,始终对包含特殊字符的值进行编码。此外,对于服务器端...

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

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

    url参数中传递特殊字符处理方法

    以下是常见的 URL 特殊符号及编码: 1. + 号表示空格,编码为 %2B 2. 空格,编码为 %20 3. / 分隔目录和子目录,编码为 %2F 4. ? 分隔实际的 URL 和参数,编码为 %3F 5. % 指定特殊字符,编码为 %25 6. # 表示书签...

    SHA-1解密主要是0-9,a-z,A-Z,&quot;!@#$%^&amp;*()-=+-;:&#039;,.&lt;&gt;?/`~&quot; 这些特殊字符单个解密

    我的SAH-1这个节目主要是0-9,a-z,A-Z,"!@#$%^&*()-_=+[]{}|;:',.&lt;&gt;?/`~" 这些特殊字符单个解密,!!!!!注意,我说的是解单个...复制到我的软件里面后即可解出(单个字符,脚本做了去空格并且排列在同一行):HDCTF

    HTML转义符号.pdf

    ISO Latin-1 字符集是一种常用的字符集,包括很多特殊符号。例如: * 制表符:&#09; * 换行:&#10; * 回车:&#13; * 空格:&#32; * 惊叹号:! 或 &#33; * 双引号:" 或 &#34; * 数字标志:# 或 &#35; * 美元标志:$ ...

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

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

    js的form表单提交url传参数(包含+等特殊字符)的两种解决方法

    当需要在URL中传递参数时,某些特殊字符可能会影响数据的正确传递,例如加号"+"在URL中有特殊的含义,它代表空格。为了确保数据能够准确无误地通过GET或POST请求发送,我们需要对这些特殊字符进行编码处理。这篇文章...

    php获取URL中带#号等特殊符号参数的解决方法

    在PHP开发中,有时我们需要从URL中获取参数,但遇到包含特殊字符如#时,可能会遇到问题。这是因为#在URL中被用作片段标识符,用于指示浏览器跳转到页面的特定位置,而不是作为参数传递。因此,当URL中包含#时,...

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

    在Swift编程中,URL(统一资源定位符)是用于标识互联网上特定资源的字符串,它包含协议、主机名、路径、查询参数等信息。然而,URL中可能存在一些不合法的字符,比如空格、中文字符以及其他特殊字符,这些字符可能...

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

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

    url特殊字符处理方法

    * =URL中的指定参数的值%3D 在Java中,使用java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s)函数来进行URL的编码和解码。在JavaScript中,使用escape(String s)和unescape(String s)...

    HTML特殊字符集[参照].pdf

    这些字符是HTML和XHTML中特有的特殊符号,包括了版权符号、注册商标符号、商标符号、空格符号、 Less-than符号、Greater-than符号、双引号符号等。 下面是常见的HTML特殊字符集对照表: * 空格符号:&nbsp; &#32; ...

    HTML特殊符号对照表

    HTML特殊符号是网页开发中不可或缺的一部分,它们用于在HTML文档中插入无法直接通过键盘输入的字符或特殊符号。这些符号通常以命名实体、十进制编码或者十六进制编码的形式存在,使得开发者能够准确地在网页上显示...

    javaScript处理URL中特殊符号的处理

    在URL中传递参数时,有些特殊符号由于是URL的保留字符,不能直接使用,否则可能会导致参数解析错误或者行为不符合预期。这些特殊字符包括但不限于:`&`、`=`、`%`、`#` 等。 为了在URL中传递这些特殊字符,我们需要...

    javascript 传参中文乱码解决方案

    URL编码是一种用来转换URL中特殊字符(包括中文字符)的方法,它将这些特殊字符转换为一个或多个可用于URL的ASCII字符序列。例如,“空格”会被编码为“%20”。 ##### 1.1 URL编码原理 - **编码规则**:大多数非...

    url rewrite 时,中文参数解决方法:用到的解码函数

    然而,在进行URL重写的操作时,如果URL中包含了中文字符或其他特殊字符,则可能会出现乱码或解析错误的问题。本文将详细介绍如何在ASP页面中通过自定义解码函数来解决中文参数在URL重写过程中的编码问题。 #### ...

    JSP中js传递和解析URL参数以及中文转码和解码问题.docx

    在Web开发中,尤其是使用Java Server Pages (JSP)进行开发时,经常需要处理URL中的参数,包括参数的传递、解析以及对中文等特殊字符的处理。本文将详细介绍如何在JSP页面中利用JavaScript进行URL参数的传递和解析,...

Global site tag (gtag.js) - Google Analytics