Html编码和URL编码

终于弄清楚了这两种编码的使用场景,来分享下。

一、HTML编码

当html页面中某label想要显示test这个内容时,如果简单地写label.html("test"),页面会显示一个内容为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)这种形式,来获取原内容。

二、URL编码

url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。

任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。

以上来自百度百科


举一个使用场景,比如页面跳转时的参数,?a=中国人+ ,若直接重定向到此链接,+特殊字符会被过滤掉,此时就需要进行url编码了

js中自带了url编码方法,encodeURI()、encodeURIComponent()

       对应的url解码方法,decodeURI()、decodeURIComponent()


BTW:C#中对URL编码的方法
编码:Server.UrlEncode(string)
解码:Server.UrlDecode(string)



你可能感兴趣的:(html/js/css)