javascript 使用btoa和atob來(lái)進(jìn)行Base64轉(zhuǎn)碼和解碼
javascript原生的api本來(lái)就支持,Base64,但是由于之前的javascript局限性刃唤,導(dǎo)致Base64基本中看不中用。當(dāng)前html5標(biāo)準(zhǔn)正式化之際,Base64將有較大的轉(zhuǎn)型空間,對(duì)于Html5 Api中出現(xiàn)的如FileReader Api, 拖拽上傳,甚至是Canvas,Video截圖都可以實(shí)現(xiàn)煌寇。
好了纯路,前言說(shuō)了一大堆,開(kāi)發(fā)者需要重視:
一.我們來(lái)看看,在javascript中如何使用Base64轉(zhuǎn)碼
var str ='javascript';window.btoa(str)//轉(zhuǎn)碼結(jié)果"amF2YXNjcmlwdA=="window.atob("amF2YXNjcmlwdA==")//解碼結(jié)果"javascript"
二.對(duì)于轉(zhuǎn)碼來(lái)說(shuō)锐峭,Base64轉(zhuǎn)碼的對(duì)象只能是字符串,因此來(lái)說(shuō)可婶,對(duì)于其他數(shù)據(jù)還有這一定的局限性沿癞,在此特別需要注意的是對(duì)Unicode轉(zhuǎn)碼。
var str ="China矛渴,中國(guó)"window.btoa(str)
Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
很明顯椎扬,這種方式是不行的,那么如何讓他支持漢字呢具温,這就要使用window.encodeURIComponent和window.decodeURIComponent
var str ="China蚕涤,中國(guó)";window.btoa(window.encodeURIComponent(str))//"Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ="window.decodeURIComponent(window.atob('Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ='))//"China,中國(guó)"