js Base64转码

Base64是一种编码方法,可以将任意字符转成可打印字符。使用这种编码方法,主要不是为了加密,而是为了不出现特殊字符,简化程序的处理。

JavaScript原生提供两个Base64相关方法。

btoa(); //字符串或二进制值转为Base64编码
atob(); //Base64编码转为原始值

下面是一个对特殊字符串的处理

<script type="text/javascript">
    var str = "hello\World" //这个字符串包含“\”,斜杠是一个特殊字符
    var str1 = btoa(str); // 转成base64
    console.log(str1);   //aGVsbG9Xb3JsZA==
    var str2 = atob(str1); //把base64转为原始字符串
    console.log(str2);  //helloWorld
</script>



但是这来个方法也有一个缺陷,它们不适合非ASCII码的字符,否者会报如下的这个错误。

<script type="text/javascript">
    var str = "你好" 
    var str1 = btoa(str); 
    console.log(str1);  //Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range
</script>

要将非ASCII码字符转为Base64编码,必须中间插入一个转码环节,要配合使用以下这两个方法。

encodeURIComponent();
decodeURIComponent();


下面是示例:

<script type="text/javascript">
    var str = "你好";
    var encode = encodeURIComponent(str);
    var str1 = btoa(encode); 
    console.log(str1); //JUU0JUJEJUEwJUU1JUE1JUJE

    var decode = decodeURIComponent(atob(str1));
    console.log(decode); //你好
</script>

综合以上内容,下面我们把这四个函数做一个简单的分装,可以使我们在开发中更为方便引用。

<script type="text/javascript">
    var base64 = { //这是一个javaScript的对象

          encode(str){

            return  str == null ? null : btoa(encodeURIComponent(str));

          },

          decode(str){

              return str == null ? null : decodeURIComponent(atob(str));

          }

        };
        console.log(base64.encode('你好'));//JUU0JUJEJUEwJUU1JUE1JUJE
</script>

本文参考至阮一峰老师的javaScript教程,很值的大家学习的一个教程,连接:

http://javascript.ruanyifeng.com/grammar/string.html#toc6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值