Загрузить файл
  1. base64hub
  2. Другие BaseN
  3. Uuencode

Uuencode и uudecode онлайн

Введите текст и получите классический uuencode со строками begin и end. Смените направление для uudecode: вставьте письмо целиком, и декодер найдёт строку begin, раскодирует блок и предложит сохранить файл под исходным именем.

Бесплатно без регистрации и ограничений Локально ничего не загружается Имя файла берётся из строки begin Обновлено 27 окт. 2026 г.
Ввод 0Байты 0 BРезультат 0

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как кодировать в uuencode и декодировать uudecode

Чтобы закодировать:

  1. Введите или вставьте текст в поле Ввод · Текст. Блок uuencode появляется в поле Результат · uuencode.
  2. Задайте Имя файла под результатом: оно попадёт в строку begin. По умолчанию это data.bin.
  3. Снимите галочку строки begin/end, если нужны только закодированные строки, например чтобы встроить их в другой формат.

Чтобы декодировать:

  1. Нажмите uuencode → Текст в переключателе направления.
  2. Вставьте данные в uuencode. Вокруг них может оставаться текст письма или поста из новостей: всё, что стоит до строки begin, пропускается.
  3. Прочитайте текст в результате или нажмите Сохранить байты, чтобы скачать декодированный файл под именем из строки begin. Для двоичного содержимого сначала выберите в В формат Hex, чтобы посмотреть, что внутри.

Из чего состоит файл в uuencode

Текст Cat с именем файла hello.txt кодируется так:

begin 644 hello.txt
#0V%T
`
end
  • begin 644 hello.txt задаёт права доступа Unix и имя файла.
  • Каждая строка данных начинается с символа длины: число байтов в строке плюс 32. Код # равен 35, значит, в строке 3 байта. Полная строка вмещает 45 байтов и начинается с M, за которым идут 60 символов.
  • Символы данных по сути работают как в Base64: каждые 3 байта превращаются в четыре 6-битных значения, и каждое значение v записывается символом с кодом v + 32. Значение 0 вместо пробела записывается обратной кавычкой.
  • Строка с одной обратной кавычкой обозначает пустую строку длины 0, а end закрывает блок.

На более длинном вводе видна структура полной строки:

begin 644 fox.txt
M5&AE('%U:6-K(&)R;W=N(&9O>"!J=6UP<R!O=F5R('1H92!L87IY(&1O9RX@
*,#$R,S0U-C<X.0``
`
end

Это The quick brown fox jumps over the lazy dog. 0123456789: 45 байтов в строке M и 10 в строке * (42 − 32 = 10). Каждая строка несёт свою длину плюс перевод строки, поэтому данные в uuencode примерно на 38% больше исходных, чуть больше, чем у Base64.

Где ещё встречается uuencode

uuencode происходит из Unix-to-Unix Copy (UUCP) и до появления MIME был стандартным способом пересылать двоичные файлы по почте и через Usenet. Сегодня он попадается в старых почтовых архивах, постах Usenet, при передаче файлов на некоторых встраиваемых системах и мейнфреймах, а также в скриптах, которые передают файлы в mail через пайп.

Соглашение об обратной кавычке родом из той же эпохи. Некоторые шлюзы обрезали пробелы в конце строк, и данные, где ноль кодировался пробелом, портились; обратная кавычка такое переживает. Этот кодировщик пишет обратные кавычки, а декодер принимает оба варианта.

Uuencode в командной строке и в Python

С установленным GNU sharutils:

uuencode hello.txt hello.txt > hello.uu
uudecode hello.uu

Первый аргумент задаёт входной файл, второй – имя, которое запишется в строку begin. uudecode создаёт файл с этим именем в текущем каталоге. Добавьте -m к uuencode, чтобы получить вместо этого Base64.

В Python binascii кодирует по одной строке длиной до 45 байтов за раз:

import binascii

binascii.b2a_uu(b"Cat", backtick=True)   # b'#0V%T\n'
binascii.a2b_uu(b"#0V%T")                # b'Cat'

Строку begin 644 name, завершающую строку с обратной кавычкой и end добавьте сами. Другие примеры кодирования есть на странице о Python.

Частые проблемы

  • Ошибка в позиции 1. Строки begin нет, и текст не похож на голые строки uuencode. Проверьте, что скопировали блок целиком.
  • Мусор на выходе из блока begin-base64. Такой блок записан командой uuencode -m и содержит Base64. Скопируйте строки между begin-base64 и ==== в декодер Base64.
  • Файл обрезан или байты в конце строк неправильные. Почтовый клиент переразбил строки или обрезал пробелы в конце. Каждая строка данных должна быть целой; попробуйте достать исходное вложение или исходный текст письма.
  • Многочастный пост декодируется лишь частично. Большие файлы часто разбивали на несколько сообщений. Перед декодированием соедините части по порядку, оставив один begin и один end.

Вопросы и ответы

Как исправить uuencode: command not found?

В большинстве дистрибутивов Linux эта команда не установлена по умолчанию. В Debian и Ubuntu sudo apt install sharutils добавит uuencode и uudecode; в Fedora тоже есть пакет sharutils.

Что означает begin 644?

644 задаёт права доступа Unix, которые получит декодированный файл (владелец читает и пишет, остальные только читают), а слово после них – имя файла. uudecode создаёт файл с этим именем; эта страница использует его для Сохранить байты.

Есть ли разница между uuencode и Base64?

Оба превращают 3 байта в 4 символа, но uuencode использует диапазон ASCII от пробела до подчёркивания и добавляет в каждую строку символ длины. У Base64 другой алфавит, и именно его использует почта MIME. uuencode -m пишет Base64 внутри блока begin-base64.

Умеет ли Python до сих пор декодировать uuencode?

Да, с помощью binascii.a2b_uu, по одной строке за раз. Высокоуровневый модуль uu объявлен устаревшим в Python 3.11 и удалён в 3.13.