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解码的字符串了。

1.3.具体实现代码

复制代码

var HtmlUtil = {

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

   htmlEncode:function (html){

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

       var temp = document.createElement ("div");

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

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

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

       var output = temp.innerHTML;

      temp = null;

      return output;

  },

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

  htmlDecode:function (text){

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

      var temp = document.createElement("div");

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

      temp.innerHTML = text;

      //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。

      var output = temp.innerText || temp.textContent;

      temp = null;

      return output;

  }

};

1 var HtmlUtil = {

2     /*1.用浏览器内部转换器实现html转码*/

3     htmlEncode:function (html){

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

5         var temp = document.createElement ("div");

6         //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)

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

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

9         var output = temp.innerHTML;

10         temp = null;

11         return output;

12     },

13     /*2.用浏览器内部转换器实现html解码*/

14     htmlDecode:function (text){

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

16         var temp = document.createElement("div");

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

18         temp.innerHTML = text;

19         //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。

20         var output = temp.innerText || temp.textContent;

21         temp = null;

22         return output;

23     }

24 };

复制代码

测试:

1 var html = "<br>aaaaaa<p>bbbb</p>";

2 var encodeHtml = HtmlUtil.htmlEncode(html);

3 alert("encodeHtml:" + encodeHtml);

4 var decodeHtml = HtmlUtil.htmlDecode(encodeHtml);

5 alert("decodeHtml:" + decodeHtml);

运行结果:

二、用正则表达式进行转换处理

使用正则表达式也是一种常用的处理方式,实现原理就是使用替换的方式来实现转码和解码,转码时把<>,空格符,&,',""替换成html编码,解码就把html编码替换成对应的字符,实现代码如下:

复制代码

1 var HtmlUtil = {

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

3     htmlEncodeByRegExp:function (str){  

4          var s = "";

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

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

7          s = s.replace(/</g,"&lt;");

8          s = s.replace(/>/g,"&gt;");

9          s = s.replace(/ /g,"&nbsp;");

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

11          s = s.replace(/\"/g,"&quot;");

12          return s;  

13    },

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

15    htmlDecodeByRegExp:function (str){  

16          var s = "";

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

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

19          s = s.replace(/&lt;/g,"<");

20          s = s.replace(/&gt;/g,">");

21          s = s.replace(/&nbsp;/g," ");

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

23          s = s.replace(/&quot;/g,"\"");

24          return s;  

25    }

26 };

复制代码

测试代码:

1 var html = "<br>ccccc<p>aaaaa</p>";

2 var encodeHTML = HtmlUtil.htmlEncodeByRegExp(html);

3 alert("用正则表达式进行html转码,encodeHTML:" + encodeHTML);

4 var decodeHTML = HtmlUtil.htmlDecodeByRegExp("用正则表达式进行html解码:" + encodeHTML);

5 alert(decodeHTML);

测试结果:

三、封装HtmlUtil工具类

将两种方式封装HtmlUtil工具类,方便在开发中使用,完整代码如下:

复制代码

1 var HtmlUtil = {

2     /*1.用浏览器内部转换器实现html转码*/

3     htmlEncode:function (html){

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

5         var temp = document.createElement ("div");

6         //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)

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

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

9         var output = temp.innerHTML;

10         temp = null;

11         return output;

12     },

13     /*2.用浏览器内部转换器实现html解码*/

14     htmlDecode:function (text){

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

16         var temp = document.createElement("div");

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

18         temp.innerHTML = text;

19         //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。

20         var output = temp.innerText || temp.textContent;

21         temp = null;

22         return output;

23     },

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

25     htmlEncodeByRegExp:function (str){  

26          var s = "";

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

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

29          s = s.replace(/</g,"&lt;");

30          s = s.replace(/>/g,"&gt;");

31          s = s.replace(/ /g,"&nbsp;");

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

33          s = s.replace(/\"/g,"&quot;");

34          return s;  

35    },

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

37    htmlDecodeByRegExp:function (str){  

38          var s = "";

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

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

41          s = s.replace(/&lt;/g,"<");

42          s = s.replace(/&gt;/g,">");

43          s = s.replace(/&nbsp;/g," ");

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

45          s = s.replace(/&quot;/g,"\"");

46          return s;  

47    }

48 };

javascript处理HTML的Encode(转码)和Decode(解码)总结的更多相关文章

  1. javascript处理HTML的Encode(转码)和解码(Decode)

    HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,在这里总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式 一.用浏览器 ...

  2. C#二维码生成与解码(二)

    本文内容在<C#二维码生成与解码>的基础上增加了纠错级别和Logo图标加入,增加了二维码的功能.关于透明度在这里没有单独显现,因为在颜色里面就已经包含,颜色值由8位8进制构成,最前面的两位 ...

  3. Java二维码生成与解码

      基于google zxing 的Java二维码生成与解码   一.添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包) <!-- google二维码工具 --> &l ...

  4. C#实现二维码生成与解码

    前几天公司内部分享了一个关于二维码的例子,觉得挺好玩的,但没有提供完整的源码.有时候看到一个好玩的东西,总想自己Demo一个,于是抽空就自己研究了一下. 一.二维码的原理 工欲善其事,必先利其器.要生 ...

  5. windows8运行zxing源码 生成与解码二维码 详解(含注释与图解可直接运行)

    1 下载zxing2.1 2 本代码配置环境:eclipse.java1.6.windows8.zxing2.1 3 解压后将文件夹里面core/src下面的com文件夹导入到eclipse工程(工程 ...

  6. HTML-DEV-ToolLink(常用的在线字符串编解码、代码压缩、美化、JSON格式化、正则表达式、时间转换工具、二维码生成与解码等工具,支持在线搜索和Chrome插件。)

    HTML-DEV-ToolLink:https://github.com/easonjim/HTML-DEV-ToolLink 常用的在线字符串编解码.代码压缩.美化.JSON格式化.正则表达式.时间 ...

  7. 为什么请求时,需要使用URLEncode做encode转码操作(转)

    什么要对url进行encode 发现现在几乎所有的网站都对url中的汉字和特殊的字符,进行了urlencode操作,也就是: http://hi.baidu.com/%BE%B2%D0%C4%C0%C ...

  8. JavaScript的学习--生成二维码

    有一些耗cpu的计算,完全可以在客户端上计算,比如生成二维码. qrcode其实是通过计算,然后使用jquery实现图形渲染和画图.支持canvas和table两种方式生成我们所需的二维码. 具体用法 ...

  9. JavaScript之通用addLoadEvent代码源码

    在执行javascript代码时 很多情况下 我们是希望代码在网页加载完毕后立刻进行的 大家可能会立刻想到使用window.onload时间处理函数,然后通过 window.onload=functi ...

随机推荐

  1. CSS3 Flexbox不迷路指南

    Flexbox早有耳闻,但是决定切实尝试一番,还是因为看了这条围脖: 我觉得用flexbox可以实现,但是发觉无从下手,属性特性都不了解.趁此机会,学习下. 英文原版参考资料在这里:A Complet ...

  2. JWS.Mono如何进行“在线安装”

    这里话就不多说了,使用方法如下: wget http://jhonge.net/down4load/1413998270361/jwsmono_net.sh chmod a+x jwsmono_net ...

  3. Tomcat 让百度的域名显示自己的页面内容(玩耍篇)

    步骤一:在 C:\Windows\System32\drivers\etc目录下的Hosts文件中添多一个条目,如下图, 第二步:在server.xml文件中做响应配置,如下图 然后在Host节点中进 ...

  4. linux添加自定义的命令!

    修改了/root/下的.bashrc -bash-4.1# vi .bashrc # .bashrc # User specific aliases and functions alias rm='r ...

  5. 如果用css的border属性画一个三角形

    假设页面中有个div,如何通过css做一个三角形.这是我们项目中用到的今天就稍微总结下.顺便说一句偷偷写博客的感觉还挺爽 div { width: 0; height: 0; border-top: ...

  6. fir.im Log Guru 正式开源,快速找到 iOS 应用无法安装的原因

    很开心的宣布 Log Guru 正式开源! Log Guru,是 fir.im 开发团队创造的小轮子,用在 Mac 电脑上的日志获取,Github 地址:FIRHQ/LogGuru. Log Guru ...

  7. Selenium WebDriver 3.0 需要注意的事项

    以下所有代码基于Java 首先,要使用WebDriver 3.0 的话 请使用JAVA 8(必要)   其次,由于W3C标准化以及各大浏览器厂商的积极跟进,自WebDriver 3.0 之后,Sele ...

  8. 【WP开发】读写剪贴板

    在WP 8.1中只有Silverlight App支持操作剪贴板的API,Runtime App并不支持.不过,在WP 10中也引入了可以操作剪贴板的API. 顺便说点题外话,有人会说,我8.1的开发 ...

  9. 利用typescript使backbone强类型智能提示

    模型类一旦多了没有强类型和智能提示是相当痛苦的,所以. 仅仅用ts定义一个模型类: class Person extends Backbone.Model { defaults = { Name:&q ...

  10. window下Nodejs的部署

    nodejs http://nodejs.org/#download npm node cli.js install npm -gf //可以安装最新版的NPM node cli.js install ...