Warning: session_name(): Cannot change session name when session is active in /home/stalko/rodina-ru.com/docs/dokuwiki/inc/init.php on line 231
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in /home/stalko/rodina-ru.com/docs/dokuwiki/inc/init.php on line 232
======UUE======
**UUE** ([[английский-язык|англ.]] //Uuencode//) — метод представления двоичных [[данные|данных]] в текстовой форме, пригодной для передачи через средства, предназначенные только для передачи текстов (например, через [[e-mail]], [[fidonet-technology-network|FTN]], [[nntp|NNTP]]) ([[транспортное-кодирование|транспортное кодирование]]).
Название происходит от расшифровки названия программ uuencode/uudecode: //Unix-To-Unix encoding (decoding)//. В дальнейшем UUE в интернет-среде (почта, ньюсгруппы) был заменён на [[mime|MIME]], однако сохранил свою популярность в сети [[фидонет|Фидонет]].
//**Юю́ки**// — жаргонное наименование UUE-кодов в Фидонете.
=====Описание формата=====
UUE данные начинаются со строки ''begin mode file'', где ''mode'' — [[unix|Unix]]-права доступа к файлу в восьмеричной системе счисления (для DOS/Windows приложений это число всегда 644), а ''file'' — имя исходного файла.
При кодировании из файла берутся данные по три байта (в случае, если осталось меньше 3 байт, недостающие заменяются нулями)(([[http://algolist.manual.ru/compress/standard/uue.php|UUE-кодирование]])). 24 бита, образующие эти три байта, делятся на четыре группы по 6 бит. Каждая шестибитная группа интерпретируется как число (от 0 до 26−1=63), к которому добавляется 32. Получившееся число в диапазоне от 32 до 95 трактуется как код символа в [[ascii|ASCII]] таблице (получаются символы от пробела (32) до знака подчёркивания (95)). Могут использоваться и другие символы ASCII, однако значение имеют только младшие шесть бит кода символа. (В силу свойств кодировки ASCII изменение регистра символа не меняет его младшие шесть битов).(([[http://algolist.manual.ru/compress/standard/uue.php|UUE-кодирование]]))
Каждая группа из 60 символов (соответствует 45 байтам исходного файла) используется для создания отдельной строки(([[http://algolist.manual.ru/compress/standard/uue.php|UUE-кодирование]])). В начале строки указывается количество закодированных символов в строке (во всех строках, кроме последней, это число 45, то есть символ 'M'). Каждая строка завершается символом перевода строки (\n или \n\r в зависимости от платформы)(([[http://algolist.manual.ru/compress/standard/uue.php|UUE-кодирование]])).
После окончания данных кодируемого файла помещается строка, содержащая единственный пробел (и перевод строки), и строка с текстом «end».
Иногда в конце строки данных добавляют «пустые символы», обычно символ ''`'' (младшие 6 битов которого равны нулю) для предотвращения повреждения строк некоторыми почтовыми программами.
=====Пример кодирования=====
Пример кодирования английского слова Cat.
{|
| style="border-right:2px solid black"|
Исходные символы
! style="border-right:2px solid green" colspan="8"|
''C''
! style="border-right:2px solid green" colspan="8"|
''a''
! style="border-right:2px solid black" colspan="8"|
''t''
|-
| style="border-right:2px solid black"|
ASCII коды (десятич.)
! style="border-right:2px solid green" colspan="8"|
67
! style="border-right:2px solid green" colspan="8"|
97
! style="border-right:2px solid black" colspan="8"|
116
|-
| style="border-right:2px solid black"|
ASCII (двоичн.)
|
0
|
1
|
0
|
0
|
0
| style="border-right:2px solid red"|
0
|
1
| style="border-right:2px solid green"|
1
|
0
|
1
|
1
| style="border-right:2px solid red"|
0
|
0
|
0
|
0
| style="border-right:2px solid green"|
1
|
0
| style="border-right:2px solid red"|
1
|
1
|
1
|
0
|
1
|
0
| style="border-right:2px solid black"|
0
|-
| style="border-right:2px solid black"|
Новые десятичные значения
! style="border-right:2px solid red" colspan="6"|
16
! style="border-right:2px solid red" colspan="6"|
54
! style="border-right:2px solid red" colspan="6"|
5
! style="border-right:2px solid black" colspan="6"|
52
|-
| style="border-right:2px solid black"|
+32
! style="border-right:2px solid red" colspan="6"|
48
! style="border-right:2px solid red" colspan="6"|
86
! style="border-right:2px solid red" colspan="6"|
37
! style="border-right:2px solid black" colspan="6"|
84
|-
| style="border-right:2px solid black"|
Символы UUE
! style="border-right:2px solid red" colspan="6"|
''0''
! style="border-right:2px solid red" colspan="6"|
''V''
! style="border-right:2px solid red" colspan="6"|
''%''
! style="border-right:2px solid black" colspan="6"|
''T''
|}
Итоговый результат (закодировано слово Cat):
begin 644 cat.txt
#0V%T
`
end
====Таблица используемых символов UUE====
{|
!
Символ
!
десятичный\\
ASCII-код
!
Двоичный код
!
!
Символ
!
десятичный\\
ASCII-код
!
Двоичный код
|-
|
(пробел)
|
32
|
000 000
|
|
@
|
64
|
100 000
|-
|
!
|
33
|
000 001
|
|
A
|
65
|
100 001
|-
|
"
|
34
|
000 010
|
|
B
|
66
|
100 010
|-
|
#
|
35
|
000 011
|
|
C
|
67
|
100 011
|-
|
$
|
36
|
000 100
|
|
D
|
68
|
100 100
|-
|
%
|
37
|
000 101
|
|
E
|
69
|
100 101
|-
|
&
|
38
|
000 110
|
|
F
|
70
|
100 110
|-
|
'
|
39
|
000 111
|
|
G
|
71
|
100 111
|-
|
(
|
40
|
001 000
|
|
H
|
72
|
101 000
|-
|
)
|
41
|
001 001
|
|
I
|
73
|
101 001
|-
|
*
|
42
|
001 010
|
|
J
|
74
|
101 010
|-
|
+
|
43
|
001 011
|
|
K
|
75
|
101 011
|-
|
,
|
44
|
001 100
|
|
L
|
76
|
101 100
|-
|
-
|
45
|
001 101
|
|
M
|
77
|
101 101
|-
|
.
|
46
|
001 110
|
|
N
|
78
|
101 110
|-
|
/
|
47
|
001 111
|
|
O
|
79
|
101 111
|-
|
0
|
48
|
010 000
|
|
P
|
80
|
110 000
|-
|
1
|
49
|
010 001
|
|
Q
|
81
|
110 001
|-
|
2
|
50
|
010 010
|
|
R
|
82
|
110 010
|-
|
3
|
51
|
010 011
|
|
S
|
83
|
110 011
|-
|
4
|
52
|
010 100
|
|
T
|
84
|
110 100
|-
|
5
|
53
|
010 101
|
|
U
|
85
|
110 101
|-
|
6
|
54
|
010 110
|
|
V
|
86
|
110 110
|-
|
7
|
55
|
010 111
|
|
W
|
87
|
110 111
|-
|
8
|
56
|
011 000
|
|
X
|
88
|
111 000
|-
|
9
|
57
|
011 001
|
|
Y
|
89
|
111 001
|-
|
:
|
58
|
011 010
|
|
Z
|
90
|
111 010
|-
|
;
|
59
|
011 011
|
|
[
|
91
|
111 011
|-
|
<
|
60
|
011 100
|
|
\
|
92
|
111 100
|-
|
=
|
61
|
011 101
|
|
]
|
93
|
111 101
|-
|
>
|
62
|
011 110
|
|
^
|
94
|
111 110
|-
|
?
|
63
|
011 111
|
|
_
|
95
|
111 111
|-
|
|
|
|
|
[[grave-accent|`]]
|
96
|
(1) 000 000
|}
=====Недостатки=====
* Избыточность кодирования UUE составляет приблизительно 33 %.
* Несмотря на узкий диапазон используемых символов, возникают проблемы при передаче UUE через старые компьютеры, использующие не ASCII кодировку (например, [[ebcdic|EBCDIC]]).(([[http://algolist.manual.ru/compress/standard/uue.php|UUE-кодирование]]))
=====Особенности использования UUE в Фидонете=====
UUE в Фидонете является стандартом де-факто для передачи двоичных данных. Это объясняется тем, что некоторые узлы отказывались передавать «приложенные» файлы (письма с флагом Att), что обеспечило UUE популярность в качестве альтернативы. В качестве дальнейших средств борьбы с передачей двоичных данных на некоторых узлах настраивали [[мейлер-фидонет|мейлеры]] и [[тоссер|тоссеры]] на отказ в передаче и тех сообщений, которые содержат UUE.((При наложении такого запрета возникают проблемы «распознавания» многосекционных UUE-кодов.))
Для обеспечения совместимости со старым [[программное-обеспечение|программным обеспечением]]((Основные ограничения вызваны распространённостью 16-битного программного обеспечения, предназначенного для [[dos|DOS]] — например, [[тоссер|тоссера]] [[fastecho|FastEcho]]. Размер одного сегмента памяти, адресуемого такими программами, составляет 64 [[двоичные-приставки|кБ]], то есть 216 байтов.)) размер письма во многих эхоконференциях до 2004‑2005 года ограничивался величиною, например, 32 [[двоичные-приставки|кБ]]. С учётом служебной информации, добавляемой при распространении почты по Фидонету, письму не рекомендовалось превосходить размер 500 строк (~22 кБ оригинального файла). Файлы большего размера передаются в нескольких письмах, каждое такое письмо содержит одну //секцию// UUE. При этом в заголовке письма обычно указывается порядковый номер секции, а также общее число секций (в виде ''[6/55]'', где 6 — номер текущей секции, а 55 — общее число секций). Начальный номер секции различается в зависимости от используемого программного обеспечения (0 или 1).
В эхоконференциях возможность использовать UUE регулируется правилами конференции; согласно требованию [[эхополиси]] R50, для принятия конференции на региональный бон в её правилах должно быть прописано ограничение на помещение UUE.((Вторая (действующая) версия эхополиси гласит: «Пересылка двоичных файлов в форматах UUENCODE, MIME и т. д. должна регламентироваться правилами конкретной эхоконференции, но в общем случае следует стремиться к снижению такого трафика — например, запретом помещения в конференцию двоичной информации без явного разрешения (ко)модератора».)) Существует множество небонных (не находящихся на региональном эхобоне) конференций, специализирующихся на передаче UUE-кодов.
Самовольное помещение UUE большого объёма расценивается как [[xab|XAB]]. Существует прецедент срочной [[экскоммуникация|экскоммуникации]] узла 2:5030/950 за помещение пользователем узла в конференцию SU.KASCHENKO.LOCAL около 16 Мб [[mpeg-audio-layer-3|MP3]]-файлов в формате UUE.
=====Программное обеспечение=====
====Общего назначения====
* uuencode, uudecode
* [[dos-navigator|DOS Navigator]]
* [[total-commander|Total Commander]]
* MxUUE ([[плагин]] для [[far-manager|Far Manager]])
====Фидонет====
* Почтовый редактор [[golded|GoldED]] изначально поддерживал кодирование и декодирование только односекционных UUE. В редакторе [[golded+|GoldED+]] также обеспечивается декодирование многосекционных UUE-кодов.
* Заслуженной популярностью в Фидонете пользуется программа [[fastuue|FastUUE]] [[сергей-коровкин|Сергея Коровкина]], способная публиковать и собирать не только двоичные (UUE), но и текстовые секции.
* [[uucode|UUCode]] (Alex Lemenkov, Evgeny Nibylicin)
* hpucode из состава проекта [[husky]].
=====См. также=====
* [[mime|MIME]]
* [[xxencode|Xxencode]]
* [[base64|Base64]]
* [[binhex|BinHex]]
* [[yenc|YEnc]]
* [[fido|FIDO]]
=====Ссылки=====
* [[http://algolist.manual.ru/compress/standard/uue.php|UUE-кодирование]]
* [[http://www.opengroup.org/onlinepubs/009695399/utilities/uuencode.html|Описание программы uuencode в стандарте POSIX]] Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition (англ.)
{{tag>"Форматы данных" Фидонет}}