这篇文章介绍了JavaScript使用escape()、encodeURI()和decodeURI()实现URI编码解码的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
目录
一、URI编码解码
1、编解码一个字符串(淘汰)
ECMAScript v3 反对使用该方法,应使用 decodeURI() 和 decodeURIComponent() 替代它。
1、escape():编码一个字符串
escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码。
语法:escape(value);
1 2 3 |
varstr = "javascript 你好"; varstr1 = escape(str); document.write(str1); //输出:javascript%20%u4F60%u597D |
2、unecape():解码一个由escape()函数编码的字符串
1 2 3 4 5 |
varstr = "javascript 你好"; varstr1 = escape(str); document.write(str1); //javascript%20%u4F60%u597D varstr2 = unescape(str1); alert(str2); //弹出 javascript你好 |
2、编解码一个URI
1、encodeURI():转义一个URI中的字符
encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。
语法:encodeURI(uri) 这个在编码不同的AJAX请求时,解决中文乱码问题经常用到。
1 2 3 |
varstr1 = "你好javascript"; varstr2 = encodeURI(str1); document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript |
2、decodeURI():解码一个URI中的字符
语法:decodeURI(uri)
1 2 3 4 5 6 |
varstr1 = "你好javascript"; varstr2 = encodeURI(str1); document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript varstr3 = decodeURI(str2); document.write(" "+ str3) //输出:你好javascript |
3、编解码一个URI组件
1、encodeURIComponent():转义URI组件中的字符
encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
1 2 3 |
varstr1 = "你好javascript"; varstr2 = encodeURIComponent(str1); document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript |
2、decodeURIComponent():解码一个URI组件中的字符
1 2 3 4 5 6 |
varstr1 = "你好javascript"; varstr2 = encodeURIComponent(str1); document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript varstr3 = decodeURIComponent(str2); document.write(" "+ str3) //输出:你好javascript |
二、html编码解码
1、html编码解码函数
编码函数:
1 2 3 4 5 6 7 8 9 10 |
functionhtmlEncode(str) { vars = ""; 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, """); returns; } ; |
解码函数:
1 2 3 4 5 6 7 8 9 10 |
functionhtmlDecode(str){ vars = ""; 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, "\""); returns; } |
2、用浏览器内部转换器实现
1.实现html转码
1 2 3 4 5 6 7 8 9 10 |
htmlEncode:function(html){ //1.首先动态创建一个容器标签元素,如DIV vartemp = document.createElement ("div"); //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持) (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html); //3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了 varoutput = temp.innerHTML; temp = null; returnoutput; } |
2、实现html解码
1 2 3 4 5 6 7 8 9 10 |
htmlDecode:function(text){ //1.首先动态创建一个容器标签元素,如DIV vartemp = document.createElement("div"); //2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持) temp.innerHTML = text; //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。 varoutput = temp.innerText || temp.textContent; temp = null; returnoutput; }, |
本文转载自: https://www.jb51.net/article/249984.htm