js实现转义和反转义的方法

JavaScript013

js实现转义和反转义的方法,第1张

/*1.用浏览器内部转换器实现html编码(转义)*/

    htmlEncode : function (html){ 

            //.首先动态创建一个容器标签元素,如DIV 

            var  temp = document.createElement ("div")

            //然后将要转换的字符串设置为这个元素的innerText或者textContent 

            (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html) 

            //最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了 

            var   output = temp.innerHTML

            temp = null    

            return  output

     },

/*2.用浏览器内部转换器实现html解码(反转义)*/

     htmlDecode : function (text){

            //首先动态创建一个容器标签元素,如DIV

            var  temp =  document.createElement("div")

            //.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)

            temp.innerHTML = text

            //最后返回这个元素的innerText或者textContent,即得到经过HTML解码的字符串了。                    var  output = temp.innerText  ||  temp.textContent

            temp =null

            return  output

     },

注:这两种方法都是利用innerHTML会编译字符串来实现转义和反转义

/*3.用正则表达式实现html编码(转义)*/

     htmlEncodeByRegExp : function (str){ 

            var  temp = " "

            if(str.length == 0)

                return " "

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

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

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

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

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

            return  temp

     },

/*4.用正则表达式实现html解码(反转义)*/

    htmlDecodeByRegExp:function (str){ 

            var  temp = ""

            if (str.length == 0)

               return  " "

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

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

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

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

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

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

            return temp 

    },

/*5.用正则表达式实现html编码(转义)(另一种写法)*/

        html2Escape : function(sHtml) {

                return   sHtml.replace (/[<>&"]/g,function(c){return{'<':'<','>':'>','&':'&','"':'"'}[c]})

         },

/*6.用正则表达式实现html解码(反转义)(另一种写法)*/

        escape2Html : function (str) {

                var  arrEntities = {'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'}

                return   str.replace(/&(lt|gt|nbsp|amp|quot)/ig,function(all,t){return arrEntities[t]})

        }

原文地址: https://www.cnblogs.com/willingtolove/p/11059325.html

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."')

1、如果手动转的话,用replace()函数将字符替换成对应的字符。

2、js中有一个专门的转16进制的编码函数:encodeURI()

网址URL中特殊字符转义编码

字符 - URL编码值

空格 - %20

" - %22

# - %23

% - %25

&- %26

( - %28

) - %29

+ - %2B

, - %2C

/ - %2F

: - %3A

- %3B

<- %3C

= - %3D

>- %3E

? - %3F

@ - %40

\ - %5C

| - %7C

URL特殊字符转义

URL中一些字符的特殊含义,基本编码规则如下:

1、空格换成加号(+)

2、正斜杠(/)分隔目录和子目录

3、问号(?)分隔URL和查询

4、百分号(%)制定特殊字符

5、#号指定书签

6、&号分隔参数

如果需要在URL中用到,需要将这些特殊字符换成相应的十六进制的值

+ %2B

/ %2F

? %3F

% %25

# %23

&%26

由于在项目中经常要用AJAX传SQL给后台服务端

会遇到select num+1 from dual或者左右连接形式。总会丢掉(+)

这个时候可以尝试用一下URL特殊字符转义

用JS的encodeURI()函数或者直接改成相对应的十六进制的值

看网上介绍encodeURI函数也是讲URI转义

(转自另外一个问题的回答:知道搜索条目--》百度的%符号是什么意思)

由于度娘会吞链接,所以不妨链接了。