uuencode(5) uuencode(5)
NAME
uuencode file format
DESCRIPTION
The command generates files in a format that allows them
to be successfully transferred by systems which strip the
high bit from an 8-bit byte. decodes uuencoded files.
The uuencode file format consists of three sections:
header, body, and trailer. The header is a line is of the
form:
begin 644 "filename.ext"
where "644" is a -format permissions byte for the file and
"filename.ext" is the name of the encoded file.
The body section is the encoded representation of the
source file. Three bytes of input file data are encoded
into four bytes of output data.
The 24 input bits are divided up into four pieces of six
bits each. The integer value 32 (the ASCII value for the
space character) is added to each of these pieces to move
them outside of the range of control characters. To avoid
using the space character in the encoding, pieces with
value zero are encoded using backquote (ASCII value 96)
instead of zero. The resulting character is one of the
this set (ASCII values 96,33-95):
A line itself contains three segments: a length character
(encoded using the "add a space" algorithm described
above), the body of the line, typically (although not
required to be) 60 output characters long, representing 45
input bytes, and (of course) a linefeed. The length char-
acter specifies the number of valid input bytes on the
line (so, for a line which is 60 encoded bytes, the length
value would be 45). Decoding programs should decode no
further than the specified length on a single line.
The trailer, which must exist, consists of a single back-
quote ("`", ASCII 96) character on a line by itself,
directly followed by on a line by itself.
is the canonical filename extension for uuencoded files.
BUGS
uudecode does not read all permutations of the file format
described in this man page.
Ancient versions of uuencode used a space character (ASCII
32) in the encoding to represent zero. Many (arguably
broken) mailers and transport agents stripped, rewrapped,
or otherwise mangled this format, so the space was later
changed to the backquote, ASCII 96. Decoders may attempt
to read the older format if they wish, though it's
unlikely to be encountered in practice at this point in
time.
The uuencode encoding method is highly ASCII-centric. In
particular, the character set used doesn't work well on
EBCDIC-based systems. (EBCDIC, generally used by IBM main-
frames, is an old alternative character encoding; most
computers use ASCII instead).
Many variants of uuencode on various platforms generate
different forms of line checksums, using to represent the
checksum one or more encoded characters after the last
counted character in a line. Because these formats are
different and impossible to distinguish (with certainty),
such characters should be ignored by decoding implementa-
tions.
The uuencode encoding format has no provisions for seg-
mented files. Writers of segmenting utilities should be
careful to avoid using character sequences that may natu-
rally occur in the encoding (such as sequences of dashes
("---")) to divide sections.
SEE ALSO
The MIME Base64 encoding (documented in RFC 2045) is a
consistent, cross-platform-savvy message encoding which
should be used in place of UUEncode wherever possible.
The Unix-Hater's Handbook (IDG, 1994) identifies the folly
of the older zero-encoded-as-space versions of uuencode.
Apple Computer, Inc. May, 2001 uuencode(5)