在web开发中通过(?)方式在浏览器地址栏传值时,浏览器是通过“&”来区分参数个数及取值的,比如:
http://localhost/default.aspx?param1=10&5 ¶m2=20
假如说,我想取值param1中的10和5,然而因为&这个转义字符的存在,会导致参数接受错误。
针对于转义字符,可以这样理解:
1. 它是一种特殊的字符常量,一般是用‘\‘加数字(8进制)来表示;
2. 它主要用于表示一般字符不便于表示的控制代码,且用于消除紧随其后的字符的原有含义
3. 用可以看见的字符表示不可见的字符,比如‘\n‘
举一个这样的例子,我想实现一个这样的数据:
"phoneNum":"123456", "Name":"you"
编码如下:
\"phoneNum\":\"123456\", \"Name\":\"you\"
同样的,我可以再举一个这样的例子,在java中,我想讲上述例子的数据中的‘\‘去掉,代码实现如下:
String str = new String("\"phoneNum\":\"123456\", \"Name\":\"you\"");
String newStr = new String(str.replaceAll("\\\\",""));
其原因就是:在java中,‘\‘表示一个转义字符,所以‘\\‘代表‘\‘,而‘\‘正则表达式中的转义字符(replaceAll 两个的参数都是符合正则表达式规则),所以:‘\\\\‘被java转换成 ‘\\‘ , ‘\\‘又被正则表达式转换成 ‘\‘。
下面是一些URL特殊字符及编码:
+ url中+表示空格 %2B
/ 分割目录和子目录 %20
? 分割实际的url和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& url中指定的参数的分隔符 %26
= url指定参数的值 %3D
想查看其它的,请参考: http://blog.csdn.net/sunhuwh/article/details/41809909
针对于以上数据,比如我想发送这样的数据:
http://localhost/default.aspx?name=wang&num=10
转换如下:
http://localhost/default.aspx%3fname%3dwang%26num%3d10
假如你在网上看到类似的网址,再想想转义字符时,好像也不足为怪了。