javascript 使用btoa和atob来进行Base64转码和解码

Posted 羊小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用btoa和atob来进行Base64转码和解码相关的知识,希望对你有一定的参考价值。

老是记不住这两个函数,干脆写下来,比较好翻。

 

 

avascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用。当前html5标准正式化之际,Base64将有较大的转型空间,对于Html5 Api中出现的如FileReader Api, 拖拽上传,甚至是Canvas,Video截图都可以实现。

好了,前言说了一大堆,开发者需要重视:

一.我们来看看,在javascript中如何使用Base64转码

var str = ‘javascript‘;

window.btoa(str)
//转码结果 "amF2YXNjcmlwdA=="

window.atob("amF2YXNjcmlwdA==")
//解码结果 "javascript"

二.对于转码来说,Base64转码的对象只能是字符串,因此来说,对于其他数据还有这一定的局限性,在此特别需要注意的是对Unicode转码。

var str = "China,中国"
window.btoa(str)

Uncaught DOMException: Failed to execute ‘btoa‘ on ‘Window‘: The string to be encoded contains characters outside of the Latin1 range.

很明显,这种方式是不行的,那么如何让他支持汉字呢,这就要使用window.encodeURIComponent和window.decodeURIComponent

var str = "China,中国";

window.btoa(window.encodeURIComponent(str))
//"Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ="

window.decodeURIComponent(window.atob(‘Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ=‘))
//"China,中国"

以上是关于javascript 使用btoa和atob来进行Base64转码和解码的主要内容,如果未能解决你的问题,请参考以下文章

javascript 使用btoa和atob来进行Base64转码和解码

使用window.btoa和window.atob来进行Base64编码和解码

为啥 Javascript `atob()` 和 `btoa()` 被这样命名?

js btoa 和 atob

window.btoa 与 window.atob

window.btoa 和 window.atob