[JS笔记] javascript base64 Encode, Decode

以下方案仅限于浏览器环境!

浏览器内置的方法 atob, btoa 仅能处理 utf-8 编码的 ascii 字符,不能直接作用于 Unicode 字符串,所以需要搞定 utf-8 编码,解码:

1
2
3
4
5
6
7
8
// utf-8 encode, decode
function encode_utf8(s) {
return unescape(encodeURIComponent(s));
}

function decode_utf8(s) {
return decodeURIComponent(escape(s));
}

来源:http://ecmanaut.blogspot.jp/2006/07/encoding-decoding-utf8-in-javascript.html
另:关于URL编码

然后 base64 自然就有了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// base64, encode, decode
function base64Encode(str) {
return btoa(unescape(encodeURIComponent(str)));
}

function base64Decode(str) {
return decodeURIComponent(escape(atob(str)));
}

// utf-8 encode, decode
function encode_utf8(s) {
return unescape(encodeURIComponent(s));
}

function decode_utf8(s) {
return decodeURIComponent(escape(s));
}

兼容情况如下:

Win32