Base64 кодировщик
Кодируйте и декодируйте Base64 с корректной обработкой UTF-8 для любого языка. Также превращает любой файл в data URI, готовый для вставки в HTML или CSS.
Как устроен Base64
Base64 берёт три байта — 24 бита — и перераспределяет их в четыре группы
по шесть бит. Каждая 6-битная группа — индекс в алфавите из 64 символов:
A–Z, a–z, 0–9, плюс и слеш. Если длина входа не кратна трём, результат
дополняется одним или двумя знаками равенства — поэтому так много
Base64 заканчивается на = или ==.
URL-безопасный вариант меняет плюс и слеш на дефис и подчёркивание, потому что у этих двух символов есть собственное значение внутри URL и иначе поверх Base64 понадобилось бы ещё и процентное кодирование.
Шаг UTF-8, который пропускают
Браузерная btoa() принимает только символы из диапазона
0–255, поэтому btoa("Ünsiyyət") выбрасывает исключение:
ə — это U+0259, заметно выше потолка. Решение — сначала
перевести текст в байты UTF-8, а уже их закодировать в Base64. Этот
инструмент так и делает, поэтому нелатинский текст здесь корректно
проходит туда и обратно, а в упрощённых реализациях ломается.
Из-за того же шага показатель роста выше считается в байтах. Три байта всегда дают четыре символа, но символ — не байт: в UTF-8 кириллическая буква занимает два байта, иероглиф — три. Подсчёт символов сделал бы то же самое кодирование в несколько раз дороже, чем оно есть.
Частые вопросы
Base64 — это шифрование?
Нет, и считать иначе — настоящая ошибка безопасности. Base64 — это кодирование: любой расшифрует его мгновенно и без ключа, ровно как делает эта страница. Он существует, чтобы безопасно проводить двоичные данные через каналы, принимающие только текст, а не чтобы что-то скрывать.
Почему закодированный текст становится больше?
Base64 представляет каждые три байта четырьмя ASCII-символами, поэтому результат примерно на 33 процента больше входа в байтах, плюс дополнение. Обратите внимание: считается в байтах, а не в символах. Японский иероглиф — это три байта UTF-8, поэтому семь японских символов дают 28 символов Base64: рост символов вчетверо, а байтов — на привычную треть.
Корректно ли обрабатывается неанглийский текст?
Да. Текст сначала кодируется в UTF-8, затем в Base64. Это важно, потому что встроенная функция браузера btoa выбрасывает ошибку на любом символе выше кодовой точки 255 — а это все латинские буквы с диакритикой, вся кириллица, арабица, китайские иероглифы и эмодзи.
Когда лучше data URI, а когда файл?
Для мелких ресурсов, которые иначе стоили бы лишнего сетевого запроса: иконка в пару килобайт или подмножество шрифта. Примерно от 5 КБ проигрыш в размере перевешивает сэкономленный запрос, а поскольку data URI встраивается в файл, который на него ссылается, отдельно закешировать его нельзя.
Похожие инструменты
- PDF-студияВидите каждую страницу открытых PDF: перетаскивайте, поворачивайте, удаляйте, делите, ставьте водяной знак и экспортируйте.
- Объединение PDFОбъединяйте PDF и изображения в один PDF, извлекайте и делите страницы, поворачивайте сканы. JPG в PDF — тоже полностью офлайн.
- CSV → JSON конвертерКонвертируйте CSV/TSV в JSON или NDJSON и JSON обратно в готовый для Excel CSV — кавычки, запятые и типы обрабатываются корректно.