Как кодировать и декодировать строки с помощью Base64 в JavaScript

    Команда Simple-Server
    03.06.2026
    7 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Что такое Base64 и зачем оно нужно?

    Base64-алгоритм кодирования представляет собой метод преобразования бинарных данных в формат ASCII-строки. Это достигается путем деления исходных данных на блоки по 6 бит и замены каждого блока соответствующим символом из заранее определенного набора. Основные преимущества кодирования Base64 включают:

    • Обеспечение передачи бинарных данных через текстовые протоколы, такие как HTTP или JSON.
    • Предотвращение проблем, связанных с некорректной обработкой бинарных символов.
    • Простота интеграции в различные языки программирования и системы.

    Алгоритм кодирования Base64

    Метод кодирования Base64 работает следующим образом:

    1. Разбиение данных : Исходные бинарные данные разделяются на блоки по 3 байта (24 бита).
    2. Преобразование блоков : Каждый блок из 3 байт разбивается на 4 блока по 6 бит.
    3. Замена символов : Каждое 6-битное значение заменяется соответствующим символом из таблицы Base64.
    4. Дополнение : Если исходные данные не кратны 3, добавляются символы = для заполнения результирующей строки до кратности 4.

    Методы кодирования и декодирования в JavaScript

    В JavaScript существуют встроенные функции для работы с Base64, а также сторонние библиотеки, которые предоставляют расширенные возможности.

    Кодирование строки в Base64

    Для кодирования в Base64 строки в JavaScript используется функция btoa(). Эта функция принимает строку, кодирует ее в Base64 и возвращает результат.

    const originalString = "Simple-Server"; const encodedString = btoa(originalString); console.log(encodedString); // Выведет закодированную строку

    В данном примере рассматривается процесс преобразования текста в формат Base64. Встроенный метод btoa применяется к исходному значению «Simple-Server», записанному в константу originalString. После обработки результат записывается в переменную encodedString, а затем отображается в консоли как «VGltZXdlYg==». Такой способ шифрования эффективно работает с текстом, содержащим базовые ASCII-символы, но не поддерживает Unicode. Механизм преобразования использует специальный набор знаков, состоящий из букв латинского алфавита, чисел и двух дополнительных символов: плюса и слеша.

    Кодирование строки Unicode

    function encodeBase64Unicode(str) { return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) { return String.fromCharCode('0x' + p1); })); } const originalString = "Simple-Server 🚀"; const encodedString = encodeBase64Unicode(originalString); console.log(encodedString);

    Как мы видим на примере, функция encodeBase64Unicode кодирует строку в Base64 с поддержкой Unicode. Сначала используется encodeURIComponent, затем регулярное выражение преобразует закодированные символы через String.fromCharCode. В конце применяется btoa. В примере кодируется строка «Simple-Server 🚀», и в консоли появляется строка «VGltZXdlYiDwn5qA». Это нужно для корректной работы с текстом, содержащим Unicode-символы, так как обычная функция btoa не может их обработать.**
    **

    Декодирование строки из Base64

    Для декодирования строки используется функция atob(). Эта функция принимает закодированную Base64 строку и возвращает исходную строку.

    const encodedString = "0J/RgNC40LLQtdGCINC80LjRgA=="; function decodeBase64Unicode(str) { return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) { return '%' + c.charCodeAt(0).toString(16).padStart(2, '0'); }).join('')); } const decodedString = decodeBase64Unicode(encodedString); console.log(decodedString);

    Как мы видим, создается переменная encodeString, содержащая строку Base64. Функция decodeBase64Unicode декодирует ее, используя Array.prototype.map и charCodeAt для преобразования в Unicode. Результат сохраняется в decodeString и выводится через console.log(). В консоли отобразится сообщение «Привет мир».

    Онлайн-инструменты для кодирования и декодирования Base64

    Существует множество онлайн-инструментов, которые позволяют быстро кодировать и декодировать строки и файлы без необходимости писать собственный код. Среди популярных инструментов:

    • base64encode.org — позволяет кодировать и декодировать текст и файлы.
    • CyberChef — многофункциональный инструмент для обработки данных, включая Base64.
    • base64.guru — предоставляет подробную информацию и инструменты для работы с Base64.

    Преимущества использования онлайн-инструментов:

    • Быстрота и удобство;

    • Возможность работы без установки программ;

    • Поддержка различных форматов данных.

    • Ограничения по объему данных;

    • Возможные проблемы с конфиденциальностью данных.

    Кодирование и декодирование файлов в Base64

    Кодирование файла в Base64 позволяет интегрировать бинарные файлы, такие как изображения или документы, непосредственно в текстовые форматы, например, в JSON или HTML. В JavaScript для этого используется объект FileReader.

    Пример кодирования изображения в Base64:

    <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Кодирование изображения в Base64</title> </head> <body> <input type="file" id="fileInput" accept="image/*"> <img id="preview" src="" alt="Предварительный просмотр" /> <script> document.getElementById('fileInput').addEventListener('change', function(event) { const file = event.target.files[0]; if (file) { const reader = new FileReader(); reader.onload = function(e) { const base64String = e.target.result; console.log(base64String); document.getElementById('preview').src = base64String; }; reader.readAsDataURL(file); } }); </script> </body> </html>

    Как мы видим на этом примере, создается форма с input для выбора изображений и элементом img для предварительного просмотра. JavaScript добавляет обработчик события change на input. Когда выбираем файл, создается объект FileReader, который читает файл и выводит результат в формате Base64 в консоль, устанавливая его как источник для img. На скриншоте видно изображение с логотипом «Simple-Server» и результат кодирования строки Base64, который вывелся в консоль после запуска кода.

    Сравнение различных методов кодирования Base64

    Метод кодированияОписаниеПреимуществаНедостатки
    btoa() и atob()Встроенные функции для кодирования и декодирования строкПростота использованияОграничение на ASCII-символы
    FileReaderРабота с файлами для кодирования и декодирования Base64Возможность работы с файламиАсинхронность может усложнить кодирование
    Сторонние библиотекиБиблиотеки, предоставляющие расширенные возможностиДополнительные функции и поддержка UTF-8Необходимость подключения библиотеки
    Онлайн-инструментыВеб-сервисы для быстрого кодирования и декодированияБыстрота и удобствоОграничения по объему и конфиденциальность данных

    Встроенные функции для кодирования и декодирования строк

    Ограничение на ASCII-символы

    Работа с файлами для кодирования и декодирования Base64

    Возможность работы с файлами

    Асинхронность может усложнить кодирование

    Библиотеки, предоставляющие расширенные возможности

    Дополнительные функции и поддержка UTF-8

    Необходимость подключения библиотеки

    Веб-сервисы для быстрого кодирования и декодирования

    Ограничения по объему и конфиденциальность данных


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны