js前端实现字符串和base64之间互相转换!-Qui-Note

最近项目中需要将“字符串”编码成 base64格式,或者将base64转为字符串。作为一名优秀的前端工程师,那怎么不学习呐?随后,网上copy了一个大佬的idea。如下,真香!

常规数据

//编码
function b64Encode (str) { 
    return btoa(encodeURIComponent(str));
}

//解码
function b64Decode (str) {
    return decodeURIComponent(atob(str));
}

别说,通过btoa进行编码,然后atob进行解码,这对js的方法很nice啊!

解决中文乱码

随后领导大佬又返回问题了,字符串可以解码成功啊!假如字符串内容是带解码的xml,返回的结果为什么是乱码的,你看看你写的代码!

js前端实现字符串和base64之间互相转换!-Qui-Note

然后,我本地测试了一下xml编码后的字符吗,解码之后,中文内容确实是如下的乱码状态。作为一名优秀的前端工程师,怎么能有bug呐!随后,网上copy了一个大佬的idea。如下,真香!

// 编码
function getEncode64(str){   
      return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,function toSolidBytes(match, p1) {
              return String.fromCharCode('0x' + p1);
      }));
}
// 解码
function getDecode(str){
    return decodeURIComponent(atob(str).split('').map(function (c) {
         return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
    }).join(''));
}

哈哈,一顿 ctrl+c/v,搞定,黑猫白猫,抓到老鼠就是好猫!作为一名优秀的前端工程师,默默打开了掘金,不说了,学习去了(谁知道尼,搞不好摸鱼)。