使用atob方法解码中文字符的操作

参考地址

为何要多此一举,对信息进行编码?

由于一些网络通讯协议的限制, 又或者是出于信息加密的目的, 我们就需要将原信息转换为 base64 编码,然后才能进行传输。

要如何操作?

通常的方法是通过window.btoa()方法对源数据进行编码, 然后接收方使用window.atob()方法对其进行解码,从而得到原数据。

注意:方法中的b字母不是base64的缩写,a字母才是表示的base64,别被蒙了。

这种方法好使吗,会不会有什么问题?

很悲惨,这种方法存在的问题是:window.btoa()不支持中文,window.atob()转换含有中文的base64编码的时候中文部分会变为乱码

还有救吗?

不能因噎废食,虽然对中文支持的不好,但是我们用下面的方法变通一下,就可以完美支持中文了。

function utf8_to_b64(str) {
   return window.btoa(unescape(encodeURIComponent(str)));
}

function b64_to_utf8(str) {
   return decodeURIComponent(escape(window.atob(str)));
}

你可能感兴趣的:(使用atob方法解码中文字符的操作)