Usenet and email message bodies were intended to contain only ASCII characters ( or ). Most competing encodings represent binary files by converting them into printable ASCII characters, because the range of printable ASCII characters is supported by most operating systems. However, since this reduces the available character set considerably, there is significant overhead (wasted bandwidth) over 8bit-byte networks. For example, in uuencode and Base64, three bytes of data are encoded into four printable ASCII characters, which equals four bytes, a 33% overhead (not including the overhead from headers). yEnc uses one character (one byte) to represent one byte of the file, with a few exceptions. yEnc assumes that binary data mostly can be transmitted through Usenet and email. Therefore, 252 of the 256 possible bytes are passed through unencoded as a single byte, whether that result is a printable ASCII character or not. Only
NUL,
LF,
CR, and = are
escaped. LF and CR are escaped because the RFCs that define
Internet messages still require that carriage returns and line feeds have special meaning in a mail message. = is the escape character, so it itself is escaped. NUL is also escaped because of problems handling null characters in common code, although as an optimization yEnc adds 42 to every source byte so that, not uncommon, long stretches of zero bytes do not require a lot of escaping. There is no
RFC or other standards document describing yEnc. The yEnc homepage contains a specification and a grammar The yEnc homepage states that "
all major newsreaders have been extended to yEnc support".
Microsoft's
Outlook Express,
Windows Mail and
Windows Live Mail do not provide yEnc support for either news or mail, but there are
plug-ins available.
Mozilla Thunderbird will decode single-part yEnc files, but is not able to combine multi-part binaries. ==Problems==