js赋值时特殊字符完美处理方案
2012-05-24 00:00
459 查看
解决方案: 1、建立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 %> 2、页面运用,代码示例如下: 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) \' 单引号 \" 双引号 \\ 反斜杠
解决方案: 1、建立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 %> 2、页面运用,代码示例如下: 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) \' 单引号 \" 双引号 \\ 反斜杠
相关文章推荐
- jsp 中 js变量引用java变量时 特殊字符的处理
- 特殊字符的提交 JS处理
- js处理文本中特殊字符
- 特殊字符 js处理
- URL传参中不能带特殊的字符以及处理方案
- URL传参中不能带特殊的字符以及处理方案
- JS处理特殊字符
- Java处理js输入特殊字符(如“+、@、¥”)
- JS处理字符串中的特殊字符
- android js 交互的特殊字符处理
- 前台js escape及后台C# Server.UrlEncode 对QueryString传参的含~!@#$%^&*等特殊字符的处理
- Jquery的validate,清除form方法,显示密插件,正则特殊字符处理,js的call用法,ajax,h5支持情况,elclipse tomcate去掉项目名,js 的原型
- URL传参中不能带特殊的字符以及处理方案
- js 处理特殊字符
- (android文件下载)下载链接中包含特殊字符--空格,中文等,导致无法识别处理方案
- js前端特殊字符处理
- js与java对http参数含有特殊字符的传递处理
- JS 特殊字符处理和密码框不能复制粘贴
- JS处理特殊字符
- 用Javascript(js)进行HTML转义工具(处理特殊字符显示)