文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

一、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编码解码的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯