javascript原生的api本來就支持,Base64,但是由于之前的javascript局限性沮趣,導(dǎo)致Base64基本中看不中用肚吏。當(dāng)前html5標(biāo)準(zhǔn)正式化之際烘浦,Base64將有較大的轉(zhuǎn)型空間,對于Html5 Api中出現(xiàn)的如FileReader Api, 拖拽上傳,甚至是Canvas,Video截圖都可以實(shí)現(xiàn)槽华。
好了忙灼,前言說了一大堆寞酿,開發(fā)者需要重視:
一.我們來看看家夺,在javascript中如何使用Base64轉(zhuǎn)碼
varstr ='javascript';window.btoa(str)//轉(zhuǎn)碼結(jié)果"amF2YXNjcmlwdA=="window.atob("amF2YXNjcmlwdA==")//解碼結(jié)果"javascript"
二.對于轉(zhuǎn)碼來說,Base64轉(zhuǎn)碼的對象只能是字符串伐弹,因此來說拉馋,對于其他數(shù)據(jù)還有這一定的局限性,在此特別需要注意的是對Unicode轉(zhuǎn)碼惨好。
varstr ="China煌茴,中國"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
varstr ="China,中國";
window.btoa(window.encodeURIComponent(str)) ?//"Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ="
window.decodeURIComponent(window.atob('Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ=')) ?//"China龄句,中國"