正常的字符:ss2']][;c 经过转义变成了 ss2']][;c,导致页面展示出来就是乱码。
解决方案:
1、通过java后台转
通过StringEscapeUtils.unescapeHtml4(str)的方法,将转义之后的数据转回来。
例:String s = StringEscapeUtils.unescapeHtml4("ss2']][;c");//s=ss2']][;c
2、通过JS前台转
通过html解析再取值。
例:
//HTML反转义
function HTMLDecode(text) {
var temp = document.createElement("div");
temp.innerHTML = text;
var output = temp.innerText || temp.textContent;
temp = null;
return output;
}
var S = HTMLDecode("ss2']][;c");//s=ss2']][;c
注:
ss2']][;c 这种转义之后的值,如果在页面上由html直接拼接,其展示在页面上会是正常的ss2']][;c
但是如果在页面上是由对象接收,在页面上会是ss2']][;c 如下
//后台java返回firstName到前台
String firstName="ss2']][;c";
model.put("firstName",firstName);
return "desktop/shippingaddr/addDlg";
//前台addDlg.vm页面接收值,方法一:
var firstName = $!{addrInfo.firstName};
console.log(firstName);//ss2']][;c
//前台addDlg.vm页面接收值,方法二:
var str = ""+ "<tr>"
+ "<td>" + firstName + "</td>"
+ "</tr>";
//将此行tr拼到table里面,到页面上展示出来就是s=ss2']][;c,因为html自动将其转义了