base64編碼相關-btoa和atob及中文亂碼報錯問題
- 最近在做二進制編碼相關的東西,關於Base64的編碼解碼問題。遇到了一些問題。
btoa();
- btoa函數全稱就是Binary-to-ASCII,在js中用於Base64編碼
let encodedData = window.btoa("WEBGL");
- 具體的寫法如上所示,接收一個字符串, 其字符分別表示要編碼爲 ASCII 的二進制數據的單個字節。
- 返回一個 Base64 表示的字符串。
atob();
- atob函數全稱就是ASCII-to-Binary,在js中用於Base64解碼。具體用法如下所示
let encodedData = window.btoa("V0VCR0w=");
- 參數爲一個Base64表示的字符串,返回值爲一個正常的字符串
存在的問題
- 當然在實際使用中是有問題的,最主要的問題就是*** 不能轉換中文 ***,下面介紹解決方法:
encodeURIComponent();
- 這個函數是在uri中轉義除了字母、數字、(、)、.、!、~、*、’、-和_之外的所有字符。示例如下:
console.log(btoa(encodeURIComponent("嘻嘻")));
console.log(decodeURIComponent(atob("JUU1JTk4JUJCJUU1JTk4JUJC")));