有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码
十六进制值
1 | + | URL 中+号表示空格 | %2B |
2 | 空格 | URL中的空格可以用+号或者编码 | %20 |
3 | / | 分隔目录和子目录 | %2F |
4 | ? | 分隔实际的 URL 和参数 | %3F |
5 | % | 指定特殊字符 | %25 |
6 | # | 表示书签 | %23 |
7 | & | URL 中指定的参数间的分隔符 | %26 |
8 | = | URL 中指定参数的值 | %3D |
解决的方法:
replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符.
而str.replace(/\-/g,"!")则可以替换掉全部匹配的字符(g为全局标志)。
replace()
js中替换字符变量如下:
data2=data2.replace(/\%/g,"%25");
data2=data2.replace(/\#/g,"%23");
data2=data2.replace(/\&/g,"%26");
按上面写了以下JS方法
//对内容进行编码
function getEncodeURI(content) {
content = encodeURI(content);//已把%号转为%25
//content = content.replace(/\%/g, "%25");
content = content.replace(/\+/g, "%2B");
content = content.replace(/\ /g, "%20");
content = content.replace(/\//g, "%2F");
content = content.replace(/\#/g, "%23");
content = content.replace(/\&/g, "%26");
content = content.replace(/\=/g, "%3D");
content = content.replace(/\?/g, "%3F");
return content;
}