UUE () — метод представления двоичных данных в текстовой форме, пригодной для передачи через средства, предназначенные только для передачи текстов (например, через e-mail, FTN, NNTP) (транспортное кодирование).
Название происходит от расшифровки названия программ uuencode/uudecode: Unix-To-Unix encoding (decoding). В дальнейшем UUE в интернет-среде (почта, ньюсгруппы) был заменён на MIME, однако сохранил свою популярность в сети Фидонет.
Юю́ки — жаргонное наименование
Описание формата
UUE данные начинаются со строки begin mode file, где mode — Unix-права доступа к файлу в восьмеричной системе счисления (для DOS-/Windows-приложений это число всегда 644), а file — имя исходного файла.
При кодировании из файла берутся данные по три байта (в случае, если осталось меньше 3 байт, недостающие заменяются нулями). 24 бита, образующие эти три байта, делятся на четыре группы по 6 бит. Каждая шестибитная группа интерпретируется как число (от 0 до 26−1=63), к которому добавляется 32. Получившееся число в диапазоне от 32 до 95 трактуется как код символа в ASCII таблице (получаются символы от пробела (32) до знака подчёркивания (95)). Могут использоваться и другие символы ASCII, однако значение имеют только младшие шесть бит кода символа.
Каждая группа из 60 символов (соответствует 45 байтам исходного файла) используется для создания отдельной строки. В начале строки указывается количество закодированных символов в строке (во всех строках, кроме последней, это число 45, то есть символ 'M'). Каждая строка завершается символом перевода строки (\n или \n\r в зависимости от платформы).
После окончания данных кодируемого файла помещается строка, содержащая единственный пробел (и перевод строки), и строка с текстом «end».
Иногда в конце строки данных добавляют «пустые символы», обычно символ ` (младшие 6 битов которого равны нулю) для предотвращения повреждения строк некоторыми почтовыми программами.
Пример кодирования Пример кодирования английского слова Cat.
Исходные символы C a t ASCII коды (десятич.) 67 97 116 ASCII (двоичн.) 0 1 0 0 00 1 1 0 1 1 0 0 0 0 1 0 1 1 1 0 1 0 0 Новые десятичные значения 16 54 5 52 +32 48 86 37 84 Символы UUE 0 V % T
Итоговый результат (закодировано слово Cat): begin 644 cat.txt #0V%T ` end
Таблица используемых символов UUE СимволдесятичныйASCII-кодДвоичный кодСимволдесятичныйASCII-кодДвоичный код(пробел)32000 000 @64100 000!33000 001 A65100 001"34000 010 B66100 010#35000 011 C67100 011$36000 100 D68100 100%37000 101 E69100 101&38000 110 F70100 110'39000 111 G71100 111(40001 000 H72101 000)41001 001 I73101 001*42001 010 J74101 010+43001 011 K75101 011,44001 100 L76101 100-45001 101 M77101 101.46001 110 N78101 110/47001 111 O79101 111048010 000 P80110 000149010 001 Q81110 001250010 010 R82110 010351010 011 S83110 011452010 100 T84110 100553010 101 U85110 101654010 110 V86110 110755010 111 W87110 111856011 000 X88111 000957011 001 Y89111 001:58011 010 Z90111 010;59011 011 [91111 011<60011 100 \92111 100=61011 101 ]93111 101>62011 110 ^94111 110?63011 111 _95111 111 `96(1) 000 000
Недостатки Избыточность кодирования UUE составляет приблизительно 33 %. Несмотря на узкий диапазон используемых символов, возникают проблемы при передаче UUE через старые компьютеры, использующие не ASCII кодировку (например, EBCDIC).
Особенности использования UUE в Фидонете UUE в Фидонете является стандартом де-факто для передачи двоичных данных. Это объясняется тем, что некоторые узлы отказывались передавать «приложенные» файлы (письма с флагом Att), что обеспечило UUE популярность в качестве альтернативы. В качестве дальнейших средств борьбы с передачей двоичных данных на некоторых узлах настраивали мейлеры и тоссеры на отказ в передаче и тех сообщений, которые содержат UUE.При наложении такого запрета возникают проблемы «распознавания» многосекционных UUE-кодов.
Для обеспечения совместимости со старым программным обеспечениемОсновные ограничения вызваны распространённостью программного обеспечения, предназначенного например, тоссера FastEcho. Размер одного сегмента памяти, адресуемого такими программами, составляет размер письма во многих эхоконференциях до 2004—2005 года ограничивался величиною, например, 32 кБ. С учётом служебной информации, добавляемой при распространении почты по Фидонету, письму не рекомендовалось превосходить размер 500 строк (~22 кБ оригинального файла). Файлы большего размера передаются в нескольких письмах, каждое такое письмо содержит одну секцию UUE. При этом в заголовке письма обычно указывается порядковый номер секции, а также общее число секций (в виде [6/55], где 6 — номер текущей секции, а 55 — общее число секций). Начальный номер секции различается в зависимости от используемого программного обеспечения (0 или 1).
В эхоконференциях возможность использовать UUE регулируется правилами конференции; согласно требованию эхополиси R50, для принятия конференции на региональный бон в её правилах должно быть прописано ограничение на помещение UUE.Вторая (действующая) версия эхополиси гласит: «Пересылка двоичных файлов в форматах UUENCODE, MIME и т. д. должна регламентироваться правилами конкретной эхоконференции, но в общем случае следует стремиться к снижению такого трафика — например, запретом помещения в конференцию двоичной информации без явного разрешения (ко)модератора». Существует множество небонных (не находящихся на региональном эхобоне) конференций, специализирующихся на передаче 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.
Примечания
Ссылки UUE-кодирование Описание программы uuencode в стандарте POSIX Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition
Категория:Форматы данных Категория:Фидонет