html的双引号是正常的,每一个属性,例如:value="",一般都有双引号包着。但是用js添加页面节点的时候,需要转义,比如:
你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事成都网站制作、成都网站设计、企业网站建设、成都手机网站制作、网页设计、品牌网站设计、网页制作、做网站、建网站。创新互联建站拥有实力坚强的技术研发团队及素养的视觉设计专才。
var html = "div onclick=\" openUrl( ' s:url value='%{resUrl}'/ ' ) \"/div";
document.getElementById("main").innerHTML = html;
最外面的那个双引号是表示一个字符串变量的意思,而被包在里面的双引号就不起作用,只有在页面显示的时候才会起作用,也就是说js不会认为第一个双引号和第二个双引号是一对,会认为/div";这个双引号才是结尾,因为中间的被"\"转义了。
openUrl函数中的第一对单引号是表示字符串的意思,你省去也不会报错,中间那一对则是标签的属性需要。
最后的问题说明对struts的标签不熟,可以看下struts的property和ognl表达式,最多半个小时可学会。
1.html中的转义:在html中如果遇到转义字符(如“ ”),不管你的页面字符编码是utf-8亦或者是GB2312,都会直接打印成相应的字符;而当遇到(如:“\u8981”【此处的8981是16进制值】)时,则不会打印成相应字符。
/*
*html标记的转义
*@example
*pHello World!/p
* ||等价于
*pHello World!/p
* ||等价于
*pHello World!/p*/
" " == " "; //false
" ".length == 6; //true
2.html中的unicode编码:(如:” ”,【此处的160是10进制值】)
3.javascript内的unicode编码:当遇到unicode编码时(如:“\u8981”),则会打印成相应的字符;而在javasript标签中,不会对转义字符进行转义(如“ ”)
/*
*javascript中unicode编码
*@example
*"\u8981" == "要"; //true
*/
"\u8981".length == 1; //true
4.javascript中的转义:(如:”\n”会转义成换行符)
5.javascript中unicode编码和字符的相互转化
/*
*unicode编码和字符相互转化
*/
"要".charCodeAt() == 35201; //true,35201为10进制值
String.fromCharCode(35201) == "要"; //true,35201为10进制值
"\u89" + "81" == "要"; //false,值为"u8981",是由于"\u"会转义成"u"
//从unicode编码到字符的方法
eval("(\"\u89" + "81\")") == "要"; //true,8981为16进制值
最无脑的方法
var StringToBeDecoded = '\\u00ff'
var DecodedString = eval('"' + StringToBeDecoded + '"')
当然因为用到了eval所以陷阱相当多
比如任意代码执行问题
比如无效字符串无法解析啊等等
所以其实你可以用escape去存储字符串
然後用unescape去解析
比如escape('\u00ff') = '%FF'
看你的需求
目测你是在写前端後台的数据交互?
那麽也可以用JSON的思路(假设你生成数据的端可以使用任何一种JSON库
例如浏览器自带的JSON
就可以这样写
JSON.stringify({Data : '\n\r\x88\u00ff\u4e00'}).replace(/[\x80-\xff]/g,function(S){return '\\x' + S.charCodeAt().toString(16)}).replace(/[\u1000-\uffff]/g,function(S){return '\\' + escape(S).substring(1)})
这样你就能拿到一个完全由ASCII组成的数据了
然後怎麽解析就不必多说了吧
JScript 提供了一些特殊字符,允许在字符串中包括一些无法直接键入的字符。每个字符都以反斜杠开始。反斜杠是一个转义字符,表示 JScript 解释器下面的字符为特殊字符。
转义序列 字符
\b 退格
\f 走纸换页
\n 换行
\r 回车
\t 横向跳格 (Ctrl-I)
\' 单引号
\" 双引号
\\ 反斜杠
请注意,由于反斜杠本身用作转义符,因此不能直接在脚本中键入一个反斜杠。如果要产生一个反斜杠,必须一起键入两个反斜杠 (\\)。
document.write('The image path is C:\\webstuff\\mypage\\gifs\\garden.gif.');
document.write('The caption reads, "After the snow of \'97. Grandma\'s house is covered."');
js中的特殊字符,加上转义符\ 。
例如:
var txt="We are the so-called "Vikings" from the north." document.write(txt) 【错误】
var txt="We are the so-called \"Vikings\" from the north." document.write(txt) 【正确】