JavaScript对中文进行base64编码报错
知识点:btoa 和 atob 是window对象的两个函数
btoa(binary to ascii):用于将binary的数据用ascii码表示,即Base64的编码过程
atob(ascii to binary):用于将ascii码解析成binary数据,即Base64的解码过程
使用btoa对中文进行编码时报错
javascriptInvalidCharacterError: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
问题原因:因为 btoa 仅支持 ASCII 字符序列,所以对 Unicode 字符编码使用 bota 是不行的
解决方式
编码:Unicode字符 -------> 先encodeURI -------> 再btoa编码
javascriptvar rawStr = "好好学习"; var encryptedStr = btoa(encodeURIComponent(rawStr)); console.log(encryptedStr); // JUU1JUE1JUJEJUU1JUE1JUJEJUU1JUFEJUE2JUU0JUI5JUEw解码:先atob解码 -------> 再decodeURI -------> Unicode字符
javascriptvar encryptedStr = 'JUU1JUE1JUJEJUU1JUE1JUJEJUU1JUFEJUE2JUU0JUI5JUEw'; var rawStr = decodeURIComponent(atob(encryptedStr)); console.log(rawStr); // 好好学习