JavaScript使用escape()、encodeURI()和decodeURI()实现URI编码解码

2022-07-15,,,,

一、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, "&lt;");  
         s = s.replace(/>/g, "&gt;");    
         s = s.replace(/'/g, "&apos;");  
         s = s.replace(/"/g, "&quot;");  
         return s;  
    }  ;

解码函数:

function htmldecode(str){     
        var s = "";     
        if (str.length == 0) return "";  
        s = str.replace(/&amp;/g, "&");  
        s = s.replace(/&lt;/g, "<");  
        s = s.replace(/&gt;/g, ">");   
        s = s.replace(/&apos;/g, "'");     
        s = s.replace(/&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;
 },

到此这篇关于javascript实现uri编码解码的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

《JavaScript使用escape()、encodeURI()和decodeURI()实现URI编码解码.doc》

下载本文的Word格式文档,以方便收藏与打印。