终于弄清楚了这两种编码的使用场景,来分享下。
一、HTML编码
当html页面中某label想要显示<a>test</a>这个内容时,如果简单地写label.html("<a>test</a>"),页面会显示一个内容为test的a标签。
这是因为<、>是html中的特殊字符,解析时会被认为是html标签,此时要在页面上显示出一个<,就需要进行html编码,将<转义为<就ok了~
提供一个js进行html编码解码的方法
function htmlencode(s){
var div = document.createElement('div');
div.appendChild(document.createTextNode(s));
return div.innerHTML;
}
function htmldecode(s){
var div = document.createElement('div');
div.innerHTML = s;
return div.innerText;
}
另外,在使用MVC时,@Model.name这种形式已经对该字段进行html编码了,所以一般不会有这种问题。
但要注意,若是要在text的vlaue中显示,实则是不需要进行HTML编码的,此时需要用@Html.Raw(Model.name)这种形式,来获取原内容。