js賦值時特殊字符完美處理方案

解決方案:

一、創建WEB-INF/tags/format/enter.tag文件,其文件內容以下: 
01 	<%@ tag body-content="scriptless" pageEncoding="utf-8" %><%@ attribute name="value" type="java.lang.String" required="true"%><%
02 	    if(value != null) {
03 	        int lengthh = value.length();
04 	        StringBuffer filtered = new StringBuffer(lengthh);
05 	        char prevChar = '\u0000';
06 	        char c;
07 	        for (int i = 0; i < lengthh; i++) {
08 	            c = value.charAt(i);
09 	            if (c == '"') {
10 	                filtered.append("\\\"");
11 	            } else if (c == '\'') {
12 	                filtered.append("\\'");
13 	            } else if (c == '\\') {
14 	                filtered.append("\\\\");
15 	            } else if (c == '\t') {
16 	                filtered.append("\\t");
17 	            } else if (c == '\n') {
18 	                if (prevChar != '\r') {
19 	                    filtered.append("\\n");
20 	                }
21 	            } else if (c == '\r') {
22 	                filtered.append("\\n");
23 	            } else if (c == '\f') {
24 	                filtered.append("\\f");
25 	            } else if (c == '/') {
26 	                filtered.append("\\/");
27 	            } else {
28 	                filtered.append(c);
29 	            }
30 	            prevChar = c;
31 	        }
32 	        value = String.valueOf(filtered);
33 	    }  
34 	    out.print(value);
35 	%>

二、頁面運用,代碼示例以下: 
01 	<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
02 	<%@ taglib tagdir="/WEB-INF/tags/format" prefix="format" %>
03 	 
04 	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
05 	<html>
06 	  <head>
07 	    <title></title>
08 	     
09 	    <meta http-equiv="pragma" content="no-cache">
10 	    <meta http-equiv="cache-control" content="no-cache">
11 	    <script type="text/javascript">
12 	    function doTest() {
13 	        //var testValue = '${valueFromJava }';// 這種複製若valueFromJava中含有特殊字符,此時會報錯
14 	        var testValue = '<format:enter value="${s.content }" />';// 這種處理就……
15 	    }
16 	    </script>
17 	  </head>
18 	   
19 	  <body>
20 	     
21 	  </body>
22 	</html>

注:js中的特殊字符有:

轉義序列 	字符
\b 	退格
\f 	走紙換頁
\n 	換行
\r 	回車
\t 	橫向跳格 (Ctrl-I)
\' 	單引號
\" 	雙引號
\\ 	反斜槓

解決方案:

一、創建WEB-INF/tags/format/enter.tag文件,其文件內容以下: 
01 	<%@ tag body-content="scriptless" pageEncoding="utf-8" %><%@ attribute name="value" type="java.lang.String" required="true"%><%
02 	    if(value != null) {
03 	        int lengthh = value.length();
04 	        StringBuffer filtered = new StringBuffer(lengthh);
05 	        char prevChar = '\u0000';
06 	        char c;
07 	        for (int i = 0; i < lengthh; i++) {
08 	            c = value.charAt(i);
09 	            if (c == '"') {
10 	                filtered.append("\\\"");
11 	            } else if (c == '\'') {
12 	                filtered.append("\\'");
13 	            } else if (c == '\\') {
14 	                filtered.append("\\\\");
15 	            } else if (c == '\t') {
16 	                filtered.append("\\t");
17 	            } else if (c == '\n') {
18 	                if (prevChar != '\r') {
19 	                    filtered.append("\\n");
20 	                }
21 	            } else if (c == '\r') {
22 	                filtered.append("\\n");
23 	            } else if (c == '\f') {
24 	                filtered.append("\\f");
25 	            } else if (c == '/') {
26 	                filtered.append("\\/");
27 	            } else {
28 	                filtered.append(c);
29 	            }
30 	            prevChar = c;
31 	        }
32 	        value = String.valueOf(filtered);
33 	    }  
34 	    out.print(value);
35 	%>

二、頁面運用,代碼示例以下: 
01 	<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
02 	<%@ taglib tagdir="/WEB-INF/tags/format" prefix="format" %>
03 	 
04 	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
05 	<html>
06 	  <head>
07 	    <title></title>
08 	     
09 	    <meta http-equiv="pragma" content="no-cache">
10 	    <meta http-equiv="cache-control" content="no-cache">
11 	    <script type="text/javascript">
12 	    function doTest() {
13 	        //var testValue = '${valueFromJava }';// 這種複製若valueFromJava中含有特殊字符,此時會報錯
14 	        var testValue = '<format:enter value="${s.content }" />';// 這種處理就……
15 	    }
16 	    </script>
17 	  </head>
18 	   
19 	  <body>
20 	     
21 	  </body>
22 	</html>

注:js中的特殊字符有:

轉義序列 	字符
\b 	退格
\f 	走紙換頁
\n 	換行
\r 	回車
\t 	橫向跳格 (Ctrl-I)
\' 	單引號
\" 	雙引號
\\ 	反斜槓
相關文章
相關標籤/搜索