最近在工作中遇到一些问题,就是如果表单中填写一些特殊字符,使用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 中+号表示空格...
在HTML中,“#”后的数字或“x”后的十六进制数字代表Unicode编码,这些编码可以用来表示各种字符,包括非ASCII字符,如空格或其他特殊符号。 标签“web”进一步确认了这个主题与Web开发技术相关。 压缩包内的文件...
但如果服务器没有正确处理URL编码,或者你直接在URL中使用特殊符号而没有编码,就可能导致参数解析错误。 为了避免这些问题,开发者应当确保在构造URL参数时,始终对包含特殊字符的值进行编码。此外,对于服务器端...
最近在用url 传特殊字符的时候发现数据丢失了。 其实不是丢失,比如 ‘+’它会当成连接字符来处理了。 一、替换成16进制字符,在这列几个常用的转换 + 空格 / ? % & = # + / ? % & &3D # 复制代码 代码...
以下是常见的 URL 特殊符号及编码: 1. + 号表示空格,编码为 %2B 2. 空格,编码为 %20 3. / 分隔目录和子目录,编码为 %2F 4. ? 分隔实际的 URL 和参数,编码为 %3F 5. % 指定特殊字符,编码为 %25 6. # 表示书签...
我的SAH-1这个节目主要是0-9,a-z,A-Z,"!@#$%^&*()-_=+[]{}|;:',.<>?/`~" 这些特殊字符单个解密,!!!!!注意,我说的是解单个...复制到我的软件里面后即可解出(单个字符,脚本做了去空格并且排列在同一行):HDCTF
ISO Latin-1 字符集是一种常用的字符集,包括很多特殊符号。例如: * 制表符:	 * 换行: * 回车: * 空格:  * 惊叹号:! 或 ! * 双引号:" 或 " * 数字标志:# 或 # * 美元标志:$ ...
在URL传递参数中,有一些特殊字符,而这些些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码十六进制值 1. + URL 中+号表示空格 + 2. ...
当需要在URL中传递参数时,某些特殊字符可能会影响数据的正确传递,例如加号"+"在URL中有特殊的含义,它代表空格。为了确保数据能够准确无误地通过GET或POST请求发送,我们需要对这些特殊字符进行编码处理。这篇文章...
在PHP开发中,有时我们需要从URL中获取参数,但遇到包含特殊字符如#时,可能会遇到问题。这是因为#在URL中被用作片段标识符,用于指示浏览器跳转到页面的特定位置,而不是作为参数传递。因此,当URL中包含#时,...
在Swift编程中,URL(统一资源定位符)是用于标识互联网上特定资源的字符串,它包含协议、主机名、路径、查询参数等信息。然而,URL中可能存在一些不合法的字符,比如空格、中文字符以及其他特殊字符,这些字符可能...
对于js中eval()函数的理解和写一个函数trim()去掉字符串左右空格。 trim()是参照了jquery的源码,你可以放心使用。 对于js中eval(... js中处理字符串过滤前后空格的trim函数是没有的, 而jqu
* =URL中的指定参数的值%3D 在Java中,使用java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s)函数来进行URL的编码和解码。在JavaScript中,使用escape(String s)和unescape(String s)...
这些字符是HTML和XHTML中特有的特殊符号,包括了版权符号、注册商标符号、商标符号、空格符号、 Less-than符号、Greater-than符号、双引号符号等。 下面是常见的HTML特殊字符集对照表: * 空格符号:   ...
HTML特殊符号是网页开发中不可或缺的一部分,它们用于在HTML文档中插入无法直接通过键盘输入的字符或特殊符号。这些符号通常以命名实体、十进制编码或者十六进制编码的形式存在,使得开发者能够准确地在网页上显示...
在URL中传递参数时,有些特殊符号由于是URL的保留字符,不能直接使用,否则可能会导致参数解析错误或者行为不符合预期。这些特殊字符包括但不限于:`&`、`=`、`%`、`#` 等。 为了在URL中传递这些特殊字符,我们需要...
URL编码是一种用来转换URL中特殊字符(包括中文字符)的方法,它将这些特殊字符转换为一个或多个可用于URL的ASCII字符序列。例如,“空格”会被编码为“%20”。 ##### 1.1 URL编码原理 - **编码规则**:大多数非...
然而,在进行URL重写的操作时,如果URL中包含了中文字符或其他特殊字符,则可能会出现乱码或解析错误的问题。本文将详细介绍如何在ASP页面中通过自定义解码函数来解决中文参数在URL重写过程中的编码问题。 #### ...
在Web开发中,尤其是使用Java Server Pages (JSP)进行开发时,经常需要处理URL中的参数,包括参数的传递、解析以及对中文等特殊字符的处理。本文将详细介绍如何在JSP页面中利用JavaScript进行URL参数的传递和解析,...