【JavaScript教程】escape()、encodeURI()和decodeURI()如何实现URI编码解码详解

所需工具:

JavaScript

聪明的大脑

勤劳的双手

 

注意:本站只提供教程,不提供任何成品+工具+软件链接,仅限用于学习和研究,禁止商业用途,未经允许禁止转载/分享等

 

介绍

一、URI编码解码
1、编解码一个字符串(淘汰)
2、编解码一个URI
3、编解码一个URI组件
二、html编码解码
1、html编码解码函数
2、用浏览器内部转换器实现

 

教程如下

一、URI编码解码

1、编解码一个字符串(淘汰)

ECMAScript v3 反对使用该方法,应使用 decodeURI() 和 decodeURIComponent() 替代它。

1、escape():编码一个字符串

escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码。

语法:escape(value);


 	var str = "javascript 你好";
 	var str1 = escape(str);
 	document.write(str1);  //输出:javascript%20%u4F60%u597D

2、unecape():解码一个由escape()函数编码的字符串


 	var str = "javascript 你好";
 	var str1 = escape(str);
 	document.write(str1); //javascript%20%u4F60%u597D
 	var str2 = unescape(str1);
 	alert(str2); //弹出 javascript你好

2、编解码一个URI

1、encodeURI():转义一个URI中的字符

encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。

语法:encodeURI(uri) 这个在编码不同的AJAX请求时,解决中文乱码问题经常用到。


 	var str1 = "你好javascript";
 	var str2 = encodeURI(str1);
 	document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript

2、decodeURI():解码一个URI中的字符

语法:decodeURI(uri)


 	var str1 = "你好javascript";
 	var str2 = encodeURI(str1);
 	document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript
 	var str3 = decodeURI(str2);
 	document.write("
 	" + str3) //输出:你好javascript

3、编解码一个URI组件

1、encodeURIComponent():转义URI组件中的字符

encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。


 	var str1 = "你好javascript";
 	var str2 = encodeURIComponent(str1);
 	document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript

2、decodeURIComponent():解码一个URI组件中的字符


 	var str1 = "你好javascript";
 	var str2 = encodeURIComponent(str1);
 	document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript
 	var str3 = decodeURIComponent(str2);
 	document.write("
 	" + str3) //输出:你好javascript

二、html编码解码

1、html编码解码函数

编码函数:


 	function htmlEncode(str) {
 	             var s = "";
 	             if (str.length == 0) return "";
 	             s = str.replace(/&/g, "&");
 	             s = s.replace(/</g, "&amp;lt;");
 	             s = s.replace(/>/g, "&amp;gt;");
 	             s = s.replace(/'/g, "&amp;apos;");
 	             s = s.replace(/"/g, "&amp;quot;");
 	             return s;
 	     } ;

解码函数:


 	function htmlDecode(str){
 	         var s = "";
 	         if (str.length == 0) return "";
 	         s = str.replace(/&amp;amp;/g, "&amp;");
 	         s = s.replace(/&amp;;lt;/g, "<");
 	         s = s.replace(/&amp;gt;/g, ">");
 	         s = s.replace(/&amp;apos;/g, "'");
 	         s = s.replace(/&amp;quot;/g, "\"");
 	         return s;
 	     }

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

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;
 	     },

标签

发表评论