window.btoa 与 window.atob
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了window.btoa 与 window.atob相关的知识,希望对你有一定的参考价值。
参考技术A 使用 window.btoa()对数据进行加密传到后端,返回的数据中有中文,使用window.atob()解密,中文乱码解决:引入
base64.min.js
js base64的转码与解码
使用方法window.btoa 将字符串转为base64编码
使用方法window.atob 将base64编码转为js字符串
var string = “Hello World”
let base64 = window.btoa(string)
let str = window.atob(base64)
注意:
javascript中的字符的实现一般是16位无符号整数
(http://www.ecma-international.org/ecma-262/5.1/#sec-15.5.1)
window.btoa接收的string是8位的,所以,如果是超过8位的,比如unicode编码 中的中文就会报错
(
- btoa() accepts a “string” where each character represents an 8-bit byte – if you pass a string containing characters that can’t be represented in 8 bits, it willprobablybreak. This isn’t a problem if you’re actually treating the string as a byte array, but if you’re trying to do something else then you’ll have to encode it first.
- atob() returns a “string” where each character represents an 8-bit byte – that is, its value will be between 0 and 0xff. This does not mean it’s ASCII – presumably if you’re using this function at all, you expect to be working with binary data and not text.
)
let str = ‘我叫’
window.btoa(str) // InvalidCharacterError: String contains an invalid character
可以先将unicode text转换为utf-8编码(encodeURIComponent),然后使用base64编码,解码的时候再转换回来,就能得到原先的text
注意:
encodeURIComponent的转义范围比encodeURI更大
以上是关于window.btoa 与 window.atob的主要内容,如果未能解决你的问题,请参考以下文章
使用window.btoa和window.atob来进行Base64编码和解码
为啥 Javascript `atob()` 和 `btoa()` 被这样命名?