Как перевести текст в Base64
- Введите или вставьте строку в поле Ввод · текст. Кодируется ровно то, что вы ввели, включая пробелы и переводы строк.
- Base64 появляется в поле Результат · Base64. Счётчик Ввод под кнопками показывает, во сколько байтов превратился ваш текст.
- Не трогайте поле Кодировка (UTF-8), если система, которая будет декодировать значение, не ждёт другой кодировки.
- Отметьте URL-safe (- _) и Без дополнения (=), если строка пойдёт в URL или токен.
- Нажмите Скопировать результат или Скачать, чтобы сохранить его как
base64.txt.
Обратное преобразование делает Base64 в текст, а чтобы декодировать результат прямо здесь, нажмите Поменять местами.
Одна строка и несколько вариантов Base64
Base64 кодирует байты, а строка становится байтами только через кодировку. Поэтому одни и те же пять букв дают четыре разных ответа:
| Строка | Кодировка | Байтов | Base64 |
|---|---|---|---|
Grüße | UTF-8 | 7 | R3LDvMOfZQ== |
Grüße | Windows-1252 или ISO-8859-1 | 5 | R3L832U= |
Grüße | UTF-16LE | 10 | RwByAPwA3wBlAA== |
Grüße | UTF-16BE | 10 | AEcAcgD8AN8AZQ== |
Невидимые символы тоже считаются. Hello кодируется в SGVsbG8=, Hello с пробелом в конце в SGVsbG8g, а Hello с переводом строки Windows в SGVsbG8NCg==. В многострочных значениях классическая ловушка связана с переводами строк: line1 и line2, соединённые через \n, кодируются как bGluZTEKbGluZTI=, а через \r\n как bGluZTENCmxpbmUy. Если две системы расходятся в значении, сначала сравните число байтов.
Какой длины будет строка Base64
Каждые 3 байта входа превращаются в 4 символа, а последняя группа из 1 или 2 байтов дополняется знаками = до 4.
| Байтов на входе | Символов Base64 | Пример (x повторяется) |
|---|---|---|
| 1 | 4 | eA== |
| 2 | 4 | eHg= |
| 3 | 4 | eHh4 |
| 4 | 8 | eHh4eA== |
| 10 | 16 | eHh4eHh4eHh4eA== |
Значит, строка вырастает примерно на треть, а если в ней есть не-ASCII символы, которые в UTF-8 занимают по несколько байтов, ещё сильнее. Точные цифры для вывода с переносами приведены на странице о накладных расходах Base64.
Куда попадают закодированные строки
Строки переводят в Base64 в основном для того, чтобы пронести их через места, где не любят спецсимволы:
- Переменные окружения и секреты CI, где значение с кавычками,
$или переводами строк испортится.postgres://app:s3cret@db:5432/appпревращается вcG9zdGdyZXM6Ly9hcHA6czNjcmV0QGRiOjU0MzIvYXBw: одна строка, которую не нужно экранировать. - Kubernetes Secrets: значения в
data:обязаны быть в Base64. Прочитать их обратно поможет декодер Kubernetes Secret. - HTTP-заголовки, например
Authorization: Basicс закодированной паройuser:password. Готовый заголовок соберёт генератор Basic Auth. - Поля JSON и XML, в которых нужно передать произвольный текст, не воюя с правилами экранирования (JSON в Base64).
Ни в одном из этих случаев значение не скрыто. Любой, у кого есть строка, может её декодировать, так что закодированный секрет остаётся тем же секретом, только в открытом виде; подробнее в статье кодирование и шифрование.
Строка в Base64 в коде
import base64
base64.b64encode("Grüße".encode("utf-8")).decode("ascii") # 'R3LDvMOfZQ=='
base64.b64encode("Grüße".encode("cp1252")).decode("ascii") # 'R3L832U='
// Node.js
Buffer.from("Grüße", "utf8").toString("base64"); // "R3LDvMOfZQ=="
Buffer.from("Grüße", "utf16le").toString("base64"); // "RwByAPwA3wBlAA=="
В обоих языках шаг «строка → байты» прописан явно, и именно там выбирается кодировка. Подробнее на страницах Python и Node.js.
Вопросы и ответы
Как перевести строку в Base64?
Сначала строка превращается в байты через кодировку (почти везде это UTF-8), затем байты кодируются в Base64. Инструмент выше делает оба шага; в Python то же самое делает base64.b64encode(s.encode("utf-8")).decode().
Один и тот же текст всегда даёт одинаковый Base64?
Только если совпадают байты. Grüße в UTF-8 кодируется в R3LDvMOfZQ==, а в Windows-1252 в R3L832U=. Лишний пробел или перевод строки тоже меняет результат.
Какой длины получится строка Base64?
4 × ⌈n / 3⌉ символов для n байтов входных данных, без учёта переносов строк. Строка из 10 байтов даёт 16 символов; для любой длины посчитает калькулятор размера.
Можно ли хранить Base64 в конфиге или переменной окружения?
Да, это одно из главных применений: любое значение, включая переводы строк и кавычки, превращается в одну строку из безопасных символов. Чтобы она осталась одной строкой, оставьте «Перенос строк» в положении «Нет».