0x1.前页
前后台传参尤其是ajax异步处理的时候,有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。 如果不使用转义字符,这些编码就会当URL中定义的特殊字符处理。
0x2.下面整理出来一些URL特殊符号及编码 十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
9. \ 本身转义字符处理为\\即可
0x3.解决办法:
0x3.1.正则替换
function URLencode(sStr){
return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F').replace(/\#/g,'%23');
}
0x3.2.可以采用javascript的编码方法:
1.escape
- 采用ISO Latin字符集对指定的字符串进行编码。不会被此方法编码的字符: @*/+
2.encodeURI
- 把URI字符串采用UTF-8编码格式转化成escape格式的字符串不会被此方法编码的字符:!@#$&*()=:/;?+'
3.encodeURIComponent
- 把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:!*()'