zoukankan      html  css  js  c++  java
  • 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>  
     
  • 相关阅读:
    清理CentOS 7系统 journal日志
    漏洞修复:CVE-2018-18311 Perl_my_setenv()中的整数溢出导致缓冲区溢出
    content-script 发送消息给background : runtime.lastError: The message port closed before a response was received.
    SEO:适应百度的页面配置
    我的 .npmrc 配置
    Cordova + Vue 环境搭建
    发布一个PHP包到Packagist, 然后使用Composer安装
    vue3 问题记录
    问题记录
    小程序
  • 原文地址:https://www.cnblogs.com/huapox/p/3299867.html
Copyright © 2011-2022 走看看