hoosin / hoosin.github.io

此项目已经迁移 https://github.com/hoosin/JavaScript.mom
3 stars 1 forks source link

JavaScript Base64 转解码 #18

Open hoosin opened 6 years ago

hoosin commented 6 years ago

JavaScript 原生是支持 base64 的转解码,在移动端兴起的今天 base64 更加是起到了不可替代的作用。

过多的理论知识就不多少,上代码:

var str = 'javascript'

btoa(str)
//转码结果 'amF2YXNjcmlwdA=='

atob('amF2YXNjcmlwdA==')
//解码结果 'javascript'

说到这里问题来了,有同学问,假如中文字符串要怎么解决呢?

var str ='hello,中国'
btoa(str)

> Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
    at <anonymous>:2:8

根据浏览器报错提示,我们需要把中文进行 encode

var str = 'hello,中国'

window.btoa(window.encodeURIComponent(str))
//'aGVsbG8lRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ='

window.decodeURIComponent(window.atob('aGVsbG8lRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ='))
//'hello,中国'