Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.
Creates a base-64 encoded ASCII string from a "string" of binary data.
Будьте внимательней этот способ не подходит для Unicode строк! Описание работы с Unicode в секции ниже.
Синтаксис
var encodedData = window.btoa(stringToEncode);
Пример
var encodedData = window.btoa("Hello, world"); // encode a string var decodedData = window.atob(encodedData); // decode the string
Замечания
Вы можете воспользоваться этим способом, чтобы избежать проблем при передаче данных через сетевое соединение. Для этого нужно перекодировать данные в base64 и отправить их, и на другой стороне с помощью метода
декодировать полученные данные в исходный вид. Например, вы можете перекодировать управляющие символы ASCII с 0 до 31.window.atob()
btoa()
is also available to XPCOM components implemented in JavaScript, even though window
is not the global object in components.
Строки Юникод
В большинстве браузеров, вызов window.btoa()
на Unicode строке выбросит исключение Character Out Of Range (Символ вне допустимого диапазона).
Чтобы избежать этого, воспользуйтесь патерном предложеным Johan Sundström:
function utf8_to_b64(str) { return window.btoa(unescape(encodeURIComponent(str))); } function b64_to_utf8(str) { return decodeURIComponent(escape(window.atob(str))); } // Usage: utf8_to_b64('✓ à la mode'); // JTI1dTI3MTMlMjUyMCUyNUUwJTI1MjBsYSUyNTIwbW9kZQ== b64_to_utf8('JTI1dTI3MTMlMjUyMCUyNUUwJTI1MjBsYSUyNTIwbW9kZQ=='); // "✓ à la mode" utf8_to_b64('I \u2661 Unicode!'); // SSUyNTIwJTI1dTI2NjElMjUyMFVuaWNvZGUlMjUyMQ== b64_to_utf8('SSUyNTIwJTI1dTI2NjElMjUyMFVuaWNvZGUlMjUyMQ=='); // "I ♡ Unicode!"
Более правильный и производительный способ - это сконвертировать DOMString
в UTF-8 строку передав typed arrays. Как это сделать узнать можно здесь в этом параграфе.
Спецификации
Specification | Status | Comment |
---|---|---|
WHATWG HTML Living Standard Определение 'WindowBase64.btoa()' в этой спецификации. |
Живой стандарт | No change since the latest snapshot, HTML5.1. |
HTML5.1 Определение 'WindowBase64.btoa()' в этой спецификации. |
Рабочий черновик | Snapshot of WHATWG HTML Living Standard. No change. |
HTML5 Определение 'WindowBase64.btoa()' в этой спецификации. |
Рекомендация | Snapshot of WHATWG HTML Living Standard. Creation of WindowBase64 (properties where on the target before it). |
Совместимость браузеров
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | (Да) | 1.0 (1.7 или ранее)[1] | 10 | (Да) | (Да) |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | (Да) | 1.0 (1) | Нет | ? | (Да) |
[1] btoa()
is also available to XPCOM components implemented in JavaScript, even though window
is not the global object in components.