Base64 encode 把任何資料以一種方式轉成文字的表達,包括可以把 binary 檔案使用文定去表達出來。
以下會講解在 Javascript 上如果把文字資料轉成 Base64 encode。
### 由 Ascii 變成 Base64
```js
// encode a string
var encodedData = window.btoa('Hello, world');
```
### 由 Base64 變成 Ascii
```js
// decode the string
var decodedData = window.atob(encodedData);
```
就是這麼簡單了 !!!
但這是解決不到 unicode 的問題啦,因為只是 ascii 的轉換。要令 unicode 也可以成功轉換就要先把 unicode 的文字轉換成為 ascii 字符能夠表連出來。
### 使用 escape 及 encodeURIComponent
我們可以透過使用 escape 及 encodeURIComponent 把 unicode 文字變成為 ascii 表達出來的文字。
```js
// ucs-2 string to base64 encoded ascii
function utoa(str) {
return window.btoa(unescape(encodeURIComponent(str)));
}
// base64 encoded ascii to ucs-2 string
function atou(str) {
return decodeURIComponent(escape(window.atob(str)));
}
```
用以上的方法就可以把 unicode 文字轉換為 Base64 encode。
---
以下會提供一個舊舊的語法供參考 :
```js
// encode a string
var encoded = new Buffer('string data').toString('base64');
// decode a string
var decoded = new Buffer(encoded, 'base64').toString('ascii');
```