atob
— это встроенная в браузеры функция JavaScript, которая декодирует строку, закодированную в формате Base64. Название расшифровывается как “ASCII to binary”, так как функция преобразует строку в двоичные данные, представленные в формате ASCII.
Зачем использовать atob
Base64-кодирование часто применяется для передачи бинарных данных в текстовом формате, например:
- При передаче файлов через JSON или URL.
- При работе с токенами и ключами.
- При шифровании или сериализации данных.
atob
выполняет обратную операцию — декодирует такие строки в исходные данные.
Синтаксис atob
atob(encodedString)
encodedString
— строка, закодированная в Base64.- Возвращает — декодированную строку.
Пример использования atob
const encoded = 'SGVsbG8sIHdvcmxkIQ==';
const decoded = atob(encoded);
console.log(decoded); // Hello, world!
Ограничения atob
1. Кодировка символов
atob
работает только с данными, содержащими символы в диапазоне ASCII (кодовые точки от 0 до 255). Если данные содержат символы за пределами этого диапазона (например, юникод-символы), потребуется дополнительная обработка.
2. Корректный формат строки
Строка, передаваемая в atob
, должна строго соответствовать спецификации Base64: длина должна быть кратной 4 символам, разрешены только символы A-Z
, a-z
, 0-9
, +
, /
и символ заполнителя =
.
Декодирование строки с юникодом
Для работы с юникодом (например, русскими символами) atob
требуется дополнение — двойная конвертация с использованием TextEncoder
и TextDecoder
либо вспомогательных функций:
function decodeBase64Unicode(base64) {
const binary = atob(base64);
const bytes = new Uint8Array(binary.length);
for (let i = 0; i < binary.length; i++) {
bytes[i] = binary.charCodeAt(i);
}
return new TextDecoder().decode(bytes);
}
const encoded = '0JzQvtGB0YI='; // Пример Base64-кодированной строки "Привет"
console.log(decodeBase64Unicode(encoded)); // Привет
Совместимость atob
atob
поддерживается во всех современных браузерах, включая:
- Chrome
- Firefox
- Safari
- Edge
Однако в средах вне браузера (например, Node.js) atob
отсутствует. В таких случаях используется Buffer
:
const decoded = Buffer.from(encoded, 'base64').toString('utf-8');
atob
в JavaScript — это удобный способ декодировать строки в формате Base64 прямо в браузере. Это встроенная функция, не требующая подключения дополнительных библиотек, что делает ее полезным инструментом для работы с закодированными данными в веб-приложениях.