UUE (англ. Uuencode) — метод представления двоичных данных в текстовой форме, пригодной для передачи через средства, предназначенные только для передачи текстов (например, через e-mail, FTN, NNTP) (транспортное кодирование).
Название происходит от расшифровки названия программ uuencode/uudecode: Unix-To-Unix encoding (decoding). В дальнейшем UUE в интернет-среде (почта, ньюсгруппы) был заменён на MIME, однако сохранил свою популярность в сети Фидонет.
Юю́ки — жаргонное наименование UUE-кодовв Фидонете.
Описание формата
UUE данные начинаются со строки begin mode file, где mode — Unix-права доступа к файлу в восьмеричной системе счисления (для DOS-/Windows-приложений это число всегда 644), а file — имя исходного файла.
При кодировании из файла берутся данные по три байта (в случае, если осталось меньше 3 байт, недостающие заменяются нулями)[1]. 24 бита, образующие эти три байта, делятся на четыре группы по 6 бит. Каждая шестибитная группа интерпретируется как число (от 0 до 26−1=63), к которому добавляется 32. Получившееся число в диапазоне от 32 до 95 трактуется как код символа в ASCII таблице (получаются символы от пробела (32) до знака подчёркивания (95)). Могут использоваться и другие символы ASCII, однако значение имеют только младшие шесть бит кода символа.[1]
Каждая группа из 60 символов (соответствует 45 байтам исходного файла) используется для создания отдельной строки[1]. В начале строки указывается количество закодированных символов в строке (во всех строках, кроме последней, это число 45, то есть символ 'M'). Каждая строка завершается символом перевода строки (\n или \n\r в зависимости от платформы)[1].
После окончания данных кодируемого файла помещается строка, содержащая единственный пробел (и перевод строки), и строка с текстом «end».
Иногда в конце строки данных добавляют «пустые символы», обычно символ ` (младшие 6 битов которого равны нулю) для предотвращения повреждения строк некоторыми почтовыми программами.
Пример кодирования
Пример кодирования английского слова Cat.
Итоговый результат (закодировано слово Cat):
begin 644 cat.txt #0V%T ` end
Таблица используемых символов UUE
Недостатки
- Избыточность кодирования UUE составляет приблизительно 33 %.
- Несмотря на узкий диапазон используемых символов, возникают проблемы при передаче UUE через старые компьютеры, использующие не ASCII кодировку (например, EBCDIC).[1]
Особенности использования UUE в Фидонете
UUE в Фидонете является стандартом де-факто для передачи двоичных данных. Это объясняется тем, что некоторые узлы отказывались передавать «приложенные» файлы (письма с флагом Att), что обеспечило UUE популярность в качестве альтернативы. В качестве дальнейших средств борьбы с передачей двоичных данных на некоторых узлах настраивали мейлеры и тоссеры на отказ в передаче и тех сообщений, которые содержат UUE.[2]
Для обеспечения совместимости со старым программным обеспечением[3] размер письма во многих эхоконференциях до 2004—2005 года ограничивался величиною, например, 32 кБ. С учётом служебной информации, добавляемой при распространении почты по Фидонету, письму не рекомендовалось превосходить размер 500 строк (~22 кБ оригинального файла). Файлы большего размера передаются в нескольких письмах, каждое такое письмо содержит одну секцию UUE. При этом в заголовке письма обычно указывается порядковый номер секции, а также общее число секций (в виде [6/55], где 6 — номер текущей секции, а 55 — общее число секций). Начальный номер секции различается в зависимости от используемого программного обеспечения (0 или 1).
В эхоконференциях возможность использовать UUE регулируется правилами конференции; согласно требованию эхополиси R50, для принятия конференции на региональный бон в её правилах должно быть прописано ограничение на помещение UUE.[4] Существует множество небонных (не находящихся на региональном эхобоне) конференций, специализирующихся на передаче UUE-кодов.
Самовольное помещение UUE большого объёма расценивается как XAB. Существует прецедент срочной экскоммуникации узла 2:5030/900 за помещение пользователем узла в конференцию SU.KASCHENKO.LOCAL около 16 Мб MP3-файлов в формате UUE.
Программное обеспечение
Общего назначения
- uuencode, uudecode
- DOS Navigator
- Total Commander
- MxUUE (плагин для Far Manager)
Фидонет
- Почтовый редактор GoldED изначально поддерживал кодирование и декодирование только односекционных UUE. В редакторе GoldED+ также обеспечивается декодирование многосекционных UUE-кодов.
- Заслуженной популярностью в Фидонете пользуется программа FastUUEСергея Коровкина, способная публиковать и собирать не только двоичные (UUE), но и текстовые секции.
- UUCode (Alex Lemenkov, Evgeny Nibylicin)
- hpucode из состава проекта husky.
Примечания
- ↑ 12345UUE-кодирование. Дата обращения: 19 октября 2006. Архивировано 9 октября 2006 года.
- ↑При наложении такого запрета возникают проблемы «распознавания» многосекционных UUE-кодов.
- ↑Основные ограничения вызваны распространённостью 16-битного программного обеспечения, предназначенного для DOS — например, тоссераFastEcho. Размер одного сегмента памяти, адресуемого такими программами, составляет 64 кБ,то есть216 байтов.
- ↑Вторая (действующая) версия эхополиси гласит: «Пересылка двоичных файлов в форматах UUENCODE, MIME и т. д. должна регламентироваться правилами конкретной эхоконференции, но в общем случае следует стремиться к снижению такого трафика — например, запретом помещения в конференцию двоичной информации без явного разрешения (ко)модератора».
Ссылки
- UUE-кодирование
- Описание программы uuencode в стандарте POSIX Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition (англ.)