JavaScript atob 轉 base64時候處理中文方法
JavaScript atob 轉 base64時候處理中文方法
我以前一直以為轉 base64 一定都要透過套件來完成,但某一年我看到 JS 也能直接轉 base64(用atob),我一直以為很完美,直到我今天轉到中文就轉不過了…
開門見山,直接整理網路上解法
- JavaScript atob / btoa 編解碼不支援 utf8 的解決方案 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
- 解決 Javascript 中 atob 方法解碼中文字符亂碼問題 - CODING 博客
- btoa(), atob() 支援中文的方法 | Liullen dev daily
- 原来浏览器原生支持JS Base64编码解码 « 张鑫旭-鑫空间-鑫生活
atob/btoa???
由於一些網絡通訊協議的限制,你必須使用 window.btoa() 方法對原數據進行編碼後,才能進行發送。接收方使用相當於 window.atob() 的方法對接受到的 base64 數據進行解碼,得到原數據。例如,發送某些含有 ASCII 碼表中 0 到 31 之間的控制字符的數據。
參考:解決 Javascript 中 atob 方法解碼中文字符亂碼問題 - CODING 博客
记住btoa方法
btoa这个方法名称乍一看,很奇怪,不知道这个单词什么意思。我们可以理解为 B to A,也就是从B到A。那B指什么,A指什么呢?和atob方法一样,B指的是low B普通字符串,A指的是Base64字符。
因此,btoa方法表示low B普通字符to Base64字符,也就是Base64编码。
參考:原来浏览器原生支持JS Base64编码解码 « 张鑫旭-鑫空间-鑫生活
我一直看不太懂 function 為什麼取這樣….
encodeURIComponent
|
|
雖然有猜到會用 encodeURIComponent
,之前 fabar.js 有用到這個處理中文,但是沒有想到 escape / unescape ,這邊不知道有甚麼作用。前端串前端推薦使用,但不是和對外接口或是後湍操作,測試結果會比較長。
Base64 encode/decode online網站測試無法解
第三方套件
Javascript base64 - Javascript tutorial with example source code
Base64 encode/decode online網站測試可以解
上面 ESM 會有問題,所以我改用dankogai/js-base64: Base64 implementation for JavaScript
MDN 解法
|
|
Base64 encode/decode online網站測試可以解
總結
自己用的話可以看用哪一個,但對外串接還是用 第三方套件,後端串才不會有問題。