http请求url传递参数(特殊字符)解决⽅法
有些符号在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");
1,代码中可以使⽤
URLEncoder.encode(url, "UTF-8");
2.判断是否含有特殊字符
/**
* 判断是否含有特殊字符
*
* @param str
* @return true为包含,false为不包含
*/
public static boolean isSpecialChar(String str) {
String regEx = "[ _`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|\n|\r|\t";
Pattern p = pile(regEx);
Matcher m = p.matcher(str);
return m.find();
}
public static final String DEFAULT_QUERY_REGEX = "[!$^&*+=|{}';'\",<>/?~!#¥%……&*——|{}【】‘;:”“'。,、?]";