fixmint
RU

Base64 простыми словами: почему данные становятся больше и как их декодировать

Автор: · · обновлено 8 ноября 2026 г. · Чтение: 5 мин

Base64 записывает двоичные данные обычным текстом, используя 64 символа: от A до Z, от a до z, от 0 до 9, а также + и /. Каждые три байта превращаются в четыре символа, поэтому текст примерно на треть длиннее данных, которые в нём хранятся. Его используют, когда формат принимает только текст, например data URL на веб-странице, поле JSON или вложение в электронном письме.

Кодирование и декодирование Base64Прочитать или создать строку Base64Сделать бесплатно

Зачем текстовым форматам нужен Base64

Многие форматы создавались только для текста. Тело письма, файл JSON и файл CSS безопасно хранят буквы и символы, но сырое изображение или ZIP-архив содержат значения байтов, которые некоторые системы могут изменить, обрезать или принять за управляющие коды. Base64 использует только символы, которые любая текстовая система передаёт без изменений, поэтому данные доходят целыми. Формат описан в RFC 4648.

Base64 — это способ кодирования, а не защита. Любой может декодировать его без ключа, поэтому им нельзя прятать пароли и персональные данные.

Как три байта превращаются в четыре символа

Возьмём слово Man из трёх байтов: в десятичной записи это 77, 97 и 110. Вместе эти три байта дают 24 бита. Разбейте 24 бита на четыре группы по шесть бит: каждая группа — число от 0 до 63, которое указывает на один символ алфавита. Man превращается в TWFu.

Шесть бит могут задать только 64 значения, поэтому четыре символа несут три байта. Поэтому результат примерно на треть больше исходных данных, не считая переносов строк, если они добавлены.

Если данные не делятся на три байта, кодировщик дополняет конец знаками =. Ma из двух байтов превращается в TWE=, а M из одного байта — в TQ==. Дополнение говорит декодеру, сколько байтов содержит последняя группа.

Сначала текст нужно закодировать в UTF-8

Base64 работает с байтами, а текст состоит из символов. Символ вроде é или ✓ в UTF-8, кодировке, которая используется во всём вебе, занимает больше одного байта. Функция браузера btoa() принимает строку и считает каждый символ одним байтом, поэтому она выдаёт ошибку на символах за пределами базовой латиницы. Вызов с галочкой выбрасывает InvalidCharacterError.

Решение: сначала перевести текст в байты UTF-8, а потом закодировать эти байты. Фраза héllo ✓ занимает в UTF-8 10 байтов, а её Base64 — aMOpbGxvIOKckw==. Инструмент Base64 делает этот шаг за вас. При декодировании он читает байты обратно как UTF-8. Если байты не являются корректным текстом в UTF-8, инструмент считает их файлом и предлагает скачать его.

URL-безопасный Base64

В стандартном алфавите есть + и /. В URL + может означать пробел, а / разделяет части пути, поэтому строка Base64 может сломать ссылку. URL-безопасная форма (RFC 4648, раздел 5) использует вместо них - и _ и обычно убирает дополнение =. Используйте её, когда строка попадает в URL, имя файла или токен. Декодер принимает обе формы, с дополнением и без него.

Если строка Base64 взята из ссылки, сначала декодируйте URL. Значение, которое было процентно закодировано в ссылке, нужно сначала декодировать, и только потом можно прочитать его Base64. Руководство по процентному кодированию объясняет правила для ссылок.

Чаще всего так выглядит токен входа: JSON Web Token состоит из трёх частей в Base64url, соединённых точками: заголовок, данные и подпись. Декодер JWT разбивает такой токен и показывает заголовок и данные в читаемом виде JSON.

Data URL и изображения

Data URL помещает сам файл внутрь ссылки. Его форма такая: data:, затем тип содержимого, затем ;base64, затем запятая и данные. Маленькое изображение превращается в data:image/png;base64, за которым идут закодированные байты. Веб-страницы и таблицы стилей принимают эту форму, что избавляет от отдельного запроса ради крошечной иконки.

Цена — размер. Данные примерно на треть больше, и они передаются внутри страницы или таблицы стилей, а не отдельным файлом, который браузер может сохранить в кэше. Используйте data URL для небольших картинок, а не для больших фотографий. Если фото большое, сожмите его перед кодированием.

Когда вы декодируете Base64 в инструменте, он смотрит на первые байты данных. Файлы PNG, JPEG, GIF и WebP начинаются с известной сигнатуры, поэтому инструмент показывает превью и предлагает скачать файл. Data URL с типом изображения тоже показывается как картинка.

Как это сделать в fixmint

  1. Выберите Кодировать или Декодировать над полем Текст или Base64, затем вставьте текст или Base64.
  2. Отметьте URL-безопасный алфавит, без дополнения = для токенов, имён файлов и ссылок. Декодер принимает обе формы в любом случае.
  3. Чтобы сделать data URL из файла, перетащите файл в область для перетаскивания и отметьте Для файлов: вывести data: URL.
  4. Скопируйте результат. Если декодированные байты — это файл, а не текст, воспользуйтесь загрузкой, которую предлагает инструмент.

Частые ошибки декодирования

  • Недопустимый символ. Вход содержит символ, которого нет среди 64, например кавычку из скопированного предложения. Проверьте, откуда взят текст. Пробел нулевой ширины в скопированном тексте вызывает ту же ошибку, поэтому удалите невидимые символы и попробуйте снова. Руководство по невидимым символам объясняет, откуда они берутся.
  • Неверная длина. Не хватает или лишний один символ, обычно это значит, что копирование оборвалось.
  • Переносы строк и пробелы. Электронная почта (MIME) переносит Base64 каждые 76 символов. Декодер удаляет пробелы и переносы строк, поэтому перенесённый текст можно вставлять как есть.
  • Нет дополнения. Некоторые системы отбрасывают знаки =. Декодер восстанавливает их.

Особые случаи

  • Результат декодирования похож на бессмыслицу. Это может быть файл, а не текст. ZIP-архив, PDF или программа декодируются в байты, которые не читаются как текст. Инструмент предлагает такие результаты для скачивания.
  • Очень большие данные. Весь файл держится в браузере во время кодирования или декодирования, поэтому очень большой файл может обрабатываться медленно, а на телефоне — завершиться ошибкой.

Быстрые ответы

Base64 — это то же самое, что шифрование?

Нет. Это обратимое кодирование без ключа, поэтому любой может его декодировать.

Почему мой Base64 длиннее файла?

Каждые три байта превращаются в четыре символа, поэтому текст примерно на треть больше.

Почему скопированная строка Base64 не декодируется?

Обычно при копировании потерялся или добавился символ, например перенос строки оказался не на месте или пропал последний символ. Скопируйте строку из источника ещё раз.

Переведено с помощью ИИ с Английский оригинал.

Комментарии

    Комментариев пока нет. Будьте первым.

    Ваша оценка (необязательно)

    Ваша почта никогда не показывается и не сохраняется.

    Обложка книги «How to Remain Valuable When Intelligence Becomes Cheap»How to Remain Valuable When Intelligence Becomes Cheap

    224 страницы о человеческих, экономических и стратегических преимуществах, которые сохраняют ценность, когда ИИ может выполнять большую часть когнитивной работы.

    $3.84Купить на GumroadНа английском