Summary
Creates a base-64 encoded ASCII string from a "string" of binary data.
Please note that this is not suitable for raw Unicode strings! See Unicode section below.
Syntax
var encodedData = window.btoa(stringToEncode);
Example
var encodedData = window.btoa("Hello, world"); // encode a string var decodedData = window.atob(encodedData); // decode the string
Notes
You can use this method to encode data which may otherwise cause communication problems, transmit it, then use the window.atob method to decode the data again. For example, you can encode control characters such as ASCII values 0 through 31.
btoa()
is also available to XPCOM components implemented in JavaScript, even though window
is not the global object in components.
Unicode Strings
In most browsers, calling window.btoa
on a Unicode string will cause a Character Out Of Range exception.
To avoid this, consider this pattern, noted by Johan Sundström:
function utf8_to_b64( str ) {
return window.btoa(decodeURI(encodeUR IComponent( str )));
}
function b64_to_utf8( str ) {
return decodeURIComponent(encodeURI(w indow.atob( str )));
}
// Usage:
utf8_to_b64('✓ à la mode'); // "4pyTIMOgIGxhIG1vZGU="
b64_to_utf8(' 4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
A better, more faithful and less expensive solution is to convert the DOMString
to a UTF-8 encoded string passing for typed arrays. In order to do this, please, read this paragraph.
Specification
DOM Level 0. Not part of any standard. Except of course http://www.whatwg.org/specs/
From: https://developer.mozilla.org/
- // 完整的utf8字符串base64编码与解码
- function uft8ToBase64(utf8) {
- return btoa(encodeURIComponent(utf8))
; - }
- function base64ToUtf8(base64) {
- return decodeURIComponent(atob(base64
)); - }
- var base64 = uft8ToBase64("hello @云淡然");
- // "
aGVsbG8lMjAlNDAlRTQlQkElOTElRT YlQjclQTElRTclODQlQjY=" - base64ToUtf8(base64);
- // "hello @云淡然"
- // 完整的utf8字符串base64编码与解码
- function uft8ToBase64(utf8) {
- return btoa(encodeURIComponent(utf8))
; - }
- function base64ToUtf8(base64) {
- return decodeURIComponent(atob(base64
)); - }
- var base64 = uft8ToBase64("hello @云淡然");
- // "
aGVsbG8lMjAlNDAlRTQlQkElOTElRT YlQjclQTElRTclODQlQjY=" - base64ToUtf8(base64);
- // "hello @云淡然"