在开发类似csdn树型结构时,左边树型结构的结点如果带两个参数时,不能正常显示,原因是不识别某些特殊符号,如:
'<node text="内部通信录" url="/Personnel/person_list.aspx?type=P&p_no=N" target="main" />'
这样写时系统不识别“&”,而无法正常显示
如果改为:
'<node text="内部通信录" url="/Personnel/person_list.aspx?type=P%26p_no=N" target="main" />'
就可以正常显示了,
一、URL转义符
web 开发中通过问号(?)方式在浏览器地址栏中传值时。浏览器是通过“&”来区分问号后的参数个数的。 如果出现传值参数中带有“&”时,在接受页面就会出现错误,类似如下请求路径:/next.jsp?param1=hendhs89&furej & param2=sss
参数param1中含有转义字符“&” ,这样会导致被请求页的参数接收错误。
在传值前 通过 java.net.URLEncoder.encode(param1) 编码处理后,可将转义字符转为16进制;
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
......
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("@", "%40");
dict.Add(":", "%3A");
dict.Add(",", "%2C");
dict.Add("+", "%2B");
dict.Add(" ", "%20");
dict.Add("/", "%2F");
dict.Add("?", "%2B");
dict.Add("%", "%25");
dict.Add("#", "%23");
dict.Add("&", "%26");
dict.Add("=", "%3D");
dict.Add("!", "%21");
dict.Add("^", "%5E");
dict.Add("`", "%60");
dict.Add("{", "%7B");
dict.Add("}", "%7D");
dict.Add("|", "%7C");
dict.Add("[", "%5B");
dict.Add("]", "%5D");
dict.Add("\"", "%22");
dict.Add("<", "%3C");
dict.Add(">", "%3E");
dict.Add("\\", "%5");
foreach (var item in dict)
{
Console.WriteLine(item.Key+"-----"+item.Value);
}
二、在XML中的转义符又不一样:
字符 HTML字符 字符编码
和(and) & & &
单引号 ' ' '
双引号 " " "
大于号 > > >
小于号 < < <