Js中如何进行HTMLEncode?

html-css07

Js中如何进行HTMLEncode?,第1张

HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,以下总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式

一、用浏览器内部转换器实现转换

1.1.用浏览器内部转换器实现html转码

首先动态创建一个容器标签元素,如DIV,然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持),最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了。

1.2.用浏览器内部转换器实现html解码

首先动态创建一个容器标签元素,如DIV,然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持),最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。

var HtmlUtil = {

/*1.用正则表达式实现html转码*/

htmlEncodeByRegExp:function (str){

var s = ""

if(str.length == 0) return ""

s = str.replace(/&/g,"&")

s = s.replace(/</g,"<")

s = s.replace(/>/g,">")

s = s.replace(/ /g," ")

s = s.replace(/\'/g,"'")

s = s.replace(/\"/g,""")

return s

},

/*2.用正则表达式实现html解码*/

htmlDecodeByRegExp:function (str){

var s = ""

if(str.length == 0) return ""

s = str.replace(/&/g,"&")

s = s.replace(/</g,"<")

s = s.replace(/>/g,">")

s = s.replace(/ /g," ")

s = s.replace(/'/g,"\'")

s = s.replace(/"/g,"\"")

return s

}

}

htmlencode的目的:将<和>尖括号等符号转掉,避免网页直接渲染标签,防止攻击。

"<hello>world</hello>"

转成

"<hello>world</hello>"

urlencode的目的:将url中的特殊字符转义,让浏览器方便处理,比如空格、加号等

(url只能使用ASCII character-set,除此之外,都要转义)

"hello+world = hello world"

转成

"hello%2Bworld+%3D+hello+world"

除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。