javascript特殊符号

javascript和JAVA一样,一些特殊字符需要转义   
    
特别是在一些JSP网页的开发中,好多程序员经常会忘掉这点,   
例:   
1 <% List textList = (List)request.getAttribute("textList"); %>   
2 <script>   
3 <!--   
4 var txtList = new Array();   
5 <% for ( int i = 0 ; i < textList.size() ; i++) { %>   
6 txtList[<%=i%>] = "<%=textList.get(i)%>";   
7 <% } %>   
8 -->   
9 </script>   
    
这段JS就存在问题,未对特殊符号进行处理.有特殊符号的情况下有可能报JSERROR   
    
JAVASCRIPT中需要转义的有:   
    
转义序列 字符    
\b 退格    
\f 走纸换页    
\n 换行    
\r 回车    
\t 横向跳格 (Ctrl-I)    
\' 单引号    
\" 双引号    
\\ 反斜杠    
  
此外,对/符号我觉得也有必要进行处理,因为象 --></script> 这样的字符串也会使SCRIPT出错.   
    
下面提供一个比较实用java的方法,做这个特殊符号的处理:   
 1public class JavaScriptUtils {   
 2 public static String javaScriptEscape(String input) {   
 3  if (input == null) {   
 4   return input;   
 5  }   
 6  StringBuffer filtered = new StringBuffer(input.length());   
 7  char prevChar = '\u0000';   
 8  char c;   
 9  for (int i = 0; i < input.length(); i++) {   
10   c = input.charAt(i);   
11   if (c == '"') {   
12    filtered.append("\\\"");   
13   }   
14   else if (c == '\'') {   
15    filtered.append("\\'");   
16   }   
17   else if (c == '\\') {   
18    filtered.append("\\\\");   
19   }   
20   else if (c == '\t') {   
21    filtered.append("\\t");   
22   }   
23   else if (c == '\n') {   
24    if (prevChar != '\r') {   
25     filtered.append("\\n");   
26    }   
27   }   
28   else if (c == '\r') {   
29    filtered.append("\\n");   
30   } else if (c == '\f') {   
31                filtered.append("\\f");   
32  } else if (c == '/') {   
33                filtered.append("\\/");   
34            }   
35   else {   
36    filtered.append(c);   
37   }   
38   prevChar = c;   
39  }   
40  return filtered.toString();   
41 }   
42}   
43  
  
上面的例子应改为:   
1 <% List textList = (List)request.getAttribute("textList"); %>   
2 <script>   
3 <!--   
4 var txtList = new Array();   
5 <% for ( int i = 0 ; i < textList.size() ; i++) { %>   
6 txtList[<%=i%>] = "<%=JavaScriptUtils.javaScriptEscape(textList.get(i))%>";   
7 <% } %>   
8 -->   
9 </script>  
 
原文地址:https://www.cnblogs.com/huapox/p/3299867.html