WindowBase64.btoa()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
io error: No such file or directory (os error 2) (/home/runner/work/yari/yari/mdn/translated-content/files/ru/web/api/html_dom_api/index.md)
Создаёт ASCII строку закодированную в base-64 из "строки" бинарных данных.
Будьте внимательней этот способ не подходит для 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()
также доступна для XPCOM компонентов реализованных в JavaScript, даже если window
не является глобальным объектом в компонентах.
Строки Юникод
В большинстве браузеров, вызов 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 |
---|
HTML Standard # dom-btoa-dev |
Совместимость с браузерами
BCD tables only load in the browser