在JavaScript中使用Base64 Encode / Decode
在較新的瀏覽器中已經有提供btoa和atob兩個全域函式,可以用來做base64的encode和decode,
瀏覽器支援參考這裡,基本上就是IE9以下不支援,使用方法如下:
btoa('Hello, world'); // "SGVsbG8sIHdvcmxk" atob('SGVsbG8sIHdvcmxk'); // "Hello, world"
但是內建的函式不支援UTF8的編碼:
btoa('中文'); // DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
而另外在Node.js中則可使用內建的buffer模組,它也可以支援UTF8:
var Buffer = require('buffer').Buffer; new Buffer('Hello, world').toString('base64'); // "SGVsbG8sIHdvcmxk" new Buffer('SGVsbG8sIHdvcmxk', 'base64').toString(); // "Hello, world" new Buffer('中文').toString('base64'); // "5Lit5paH" new Buffer('5Lit5paH', 'base64').toString(); // "中文"
若想要瀏覽器中支援UTF8可以考慮使用我寫的hi-base64套件:
base64.encode('Hello, world'); // "SGVsbG8sIHdvcmxk" base64.decode('SGVsbG8sIHdvcmxk'); // "Hello, world" base64.encode('中文'); // "5Lit5paH" base64.decode('5Lit5paH'); // "中文"
支援各瀏覽器和Node.js。