window.btoa和window.atob

转载地址:http://www.cnblogs.com/moqiutao/p/6280099.html?utm_source=itdadao&utm_medium=referral

WindowBase64.atob()函数用来解码一个已经被base-64编码过的数据。你可以使用window.btoa()方法来编码一个可能在传输过程中出现问题的数据,并且在接受数据之后,使用window.atob()方法来讲数据解码。例如:你可以把ASCII里面数值0到31的控制字符进行编码,传输和解码。

window.btoa():将ascii字符串或二进制数据转换成一个base64编码过的字符串,该方法不能直接作用于Unicode字符串。

var encodeData = window.btoa('hello,world!')//编码
        console.log(encodeData)
        var decodeDate = window.atob(encodeData)//解码
        console.log(decodeDate)

其兼容性是主流浏览器,IE10及以上

Unicode字符串

在各浏览器中,使用window.btoa对Unicode字符串进行编码都会触发一个字符越界的异常

先把Unicode字符串转换为UTF-8编码,可以解决这个问题

    function utf8_to_b64(str) {
      return window.btoa(unescape(encodeURIComponent(str)));
    }

    function b64_to_utf8(str) {
      return decodeURIComponent(escape(window.atob(str)));
    }

    // Usage:
    console.log(utf8_to_b64('? à la mode')); // "4pyTIMOgIGxhIG1vZGU="
    console.log(b64_to_utf8('4pyTIMOgIGxhIG1vZGU=')); // "? à la mode"

在js引擎内部,encodeURIComponent(str)相当于escape(unicodeToUTF8(str))

//所以可以推导出unicodeToUTF8(str)等同于unescape(encodeURIComponent(str))

decodeURIComponent()与encodeURIComponent()

这里用到了encodeURIComponent()与decodeURIComponent()方法,下面简单介绍下:

decodeURIComponent()函数可对encodeURIComponent()函数编码的URI进行编码

    var test1 = 'http://www.w3school.com.cn/123'
    console.log(encodeURIComponent(test1))//编码
    console.log(decodeURIComponent(test1))//解码
escape()与unescape()方法
eacape()函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串

语法:escape(string)

返回值:已编码的string的副本。其中某些字符被替换成了十六进制的转义序列

说明:该方法不会对ASCII字母和数字进行编码,也不会对下面这些ASCII符号进行编码:*@-_+./。其他所有的字符都会被转义序列替换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值