资讯专栏INFORMATION COLUMN

Base64 JS编码/解码

why_rookie / 657人阅读

摘要:注意点如果所示,上面说到的编码解码方法并不支持中文,因为它们只支持编码。转换编码中文进行转码之后在编码。最优方案在某些情况下,用了上面的方法也会出现中文乱码的情况,如获取到的音乐歌词解析出来的歌词等。

为什么要编码

简单粗暴的解释就是为了数据的安全性。

编码/解码常用方法(仅针对Base64)

编码

我们一般使用 window.btoa() 对原始数据进行编码。

解码

我们一般使用 window.atob() 对编码过后的数据进行编码。

注意点

如果所示,上面说到的编码/解码方法并不支持中文,因为它们只支持ASCII 编码

但是在实际开发中,前后端要传递的数据通常不可能只有英文或者数字的。那么一旦我们要编码或者说解码的时候出现了中文字符串怎么办呢?

由于btoa()atob()只支持ASCII 编码,所以我们可以先将带中文的字符串转码成ASCII 编码,这里要用到两种方法,encodeURIComponentdecodeURIComponent, 然后再进行编码/解码操作,这样就可以解决不支持中文的问题。

转换 ASCII 编码

   window.btoa(encodeURIComponent("中文")) 进行转码之后在编码。

     decodeURIComponent(window.atob("JUU0JUI4JUFEJUU2JTk2JTg3"))
     对数据进行解码。

最优方案

在某些情况下,用了上面的方法也会出现中文乱码的情况,如GitHub API获取到的README、QQ音乐歌词API解析出来的歌词等。

如果出现了这种情况,我们可以使用 unescape()escape() 方法对做过解码/编码处理的数据进行utf-8再解码/编码。语法如下:

window.btoa(unescape(encodeURIComponent(str))) //编码

decodeURIComponent(escape(window.atob(str)))   // 解码

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97475.html

相关文章

  • 前端开发中的字符编码

    摘要:当然,也可自己写一个转换函数,按照一定规则便行为编码的字节,如下例中国结果中国结果结果通过简单的函数,就可以完成编码到编码的转换,进而完成宽字节字符到编码的转换。 前端开发过程中会接触各种各样的编码,比较常见的主要是 UTF-8 和 HTML 实体编码,但是 web 前端的世界却不止这两种编码,而且编码的选择也会造成一定的问题,如前后端开发过程中不同编码的兼容、多字节编码可能会造成的 ...

    Rindia 评论0 收藏0
  • Java Base64 编码解码方案总结

    摘要:是一种能将任意资料用种字元组合成字串的方法,而这个资料和字串资料彼此之间是可以互相转换的,十分方便。实际测试编码与解码速度的话,提供的,要比套件提供的还要快至少倍,比提供的还要快至少倍。 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便。在实际应用上,Base64除了能将Binary资料可视化之外...

    sevi_stuo 评论0 收藏0
  • python模块之base64

    摘要:模块提供了在二进制数据和可打印字符间编解码的功能,包括中定义的等编码。可应用于生成安全的或文件系统编码场景中。等同于对类字节对象或纯字符组成的字符串进行标准解码,返回解码后的字节序列。 base64模块提供了在二进制数据和可打印ASCII字符间编解码的功能,包括RFC3548中定义的Base16, Base32, Base64, Ascii85, Base85等编码。 RFC3548中...

    CoderDock 评论0 收藏0
  • Java程序员遇上字符乱码2-容易混淆的两种编码类别

    摘要:字符集编码就是对字符根据不同字符集中对应的格式进行编码解码,这个大家都好理解。下面详细说说,以编码解码和编码解码为例。 《来自罗志晓的笔记:http://note.youdao.com/notesh...》我们平时老说的编码解码,很多人都只知道 字符集编码解码。其实除了字符集编码解码,常见的还有另一类,如 Url编码解码、Base64编码解码。这两类编码的原理是完全不一样的,如果没有了...

    hidogs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<