原理
利用window自带的atob()和btoa()方法
- atob(“需要解码的字符串”)
- btoa(“需要加密的字符串,支持字母、数字等,不支持中文”)
效果与用法
-
- base64编码
window.btoa("buzhichizhongwen!!!hahaha123")
-
- base64解码
window.atob("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9")
- 效果
- 关于中文
默认情况下如上方法不适用于中文,对中文进行base64编码将报错
Uncaught DOMException: Failed to execute ‘btoa’ on ‘Window’: The string to be encoded contains characters outside of the Latin1 range. at :1:8
解决方案: 将数据进行URIEncoding及URIDecoding
//编码中文数据
btoa(encodeURIComponent("我是中文数据,hahaha"))
'JUU2JTg4JTkxJUU2JTk4JUFGJUU0JUI4JUFEJUU2JTk2JTg3JUU2JTk1JUIwJUU2JThEJUFFJUVGJUJDJThDaGFoYWhh'
//解码中文数据
decodeURIComponent(atob("JUU2JTg4JTkxJUU2JTk4JUFGJUU0JUI4JUFEJUU2JTk2JTg3JUU2JTk1JUIwJUU2JThEJUFFJUVGJUJDJThDaGFoYWhh"))
'我是中文数据,hahaha'
效果: