yEnc: Схема кодирования двоичных файлов для Usenet и электронной почты.
YEnc
yEnc: эффективная кодировка для передачи бинарных файлов по Usenet и email. Низкий overhead (1-2%) против 33-40% у uuencode/Base64. Стандарт с 2003 года.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Схема кодирования для передачи файлов
File transfer encoding scheme
yEnc — это схема кодирования из двоичного формата в текстовый для передачи двоичных файлов в сообщениях Usenet или по электронной почте. Она снижает накладные расходы по сравнению с предыдущими методами кодирования на основе US ASCII, используя 8-битный метод кодирования. Накладные расходы yEnc часто (если каждое значение байта встречается примерно с одинаковой частотой в среднем) составляют всего 1–2%, по сравнению с 33–40% для 6-битных методов кодирования, таких как uuencode и Base64. yEnc был первоначально разработан Юргеном Хелбингом, а его первый релиз состоялся в начале 2001 года. К 2003 году yEnc стал фактическим стандартом кодирования для двоичных файлов в Usenet. Название yEncode — это игра слов на тему «Зачем кодировать?», поскольку идея заключается в кодировании символов только в том случае, если это абсолютно необходимо для соответствия стандарту формата сообщения.
yEnc is a binary to text encoding scheme for transferring binary files in messages on Usenet or via e mail. It reduces the overhead over previous US ASCII based encoding methods by using an 8 bit encoding method. yEnc's overhead is often (if each byte value appears approximately with the same frequency on average) as little as 1–2%, compared to 33–40% overhead for 6 bit encoding methods like uuencode and Base64. yEnc was initially developed by Jürgen Helbing, and its first release was early 2001. By 2003 yEnc became the de facto standard encoding system for binary files on Usenet. The name yEncode is a wordplay on "Why encode? ", since the idea is to only encode characters if it is absolutely required to adhere to the message format standard.
Как работает yEnc
Тела сообщений Usenet и электронной почты изначально предназначались для содержания только символов ASCII (или). Большинство конкурирующих кодировок представляют двоичные файлы, преобразуя их в печатаемые символы ASCII, поскольку диапазон печатаемых символов ASCII поддерживается большинством операционных систем. Однако, поскольку это значительно уменьшает доступный набор символов, возникает значительная избыточность (потеря пропускной способности) в 8-битных байтовых сетях. Например, в uuencode и Base64 три байта данных кодируются в четыре печатаемых символа ASCII, что эквивалентно четырем байтам, то есть 33% избыточности (не считая избыточности заголовков). yEnc использует один символ (один байт) для представления одного байта файла, за небольшим исключением. yEnc исходит из предположения, что двоичные данные в основном могут передаваться через Usenet и электронную почту. Поэтому 252 из 256 возможных байтов передаются без кодирования в виде одного байта, независимо от того, является ли результат печатаемым символом ASCII или нет. Только NUL, LF, CR и = подвергаются экранированию. LF и CR экранируются, поскольку RFC, определяющие интернет-сообщения, по-прежнему требуют, чтобы возврат каретки и перевод строки имели специальное значение в почтовом сообщении. Символ = является escape-символом, поэтому он сам экранируется. NUL также экранируется из-за проблем с обработкой нулевых символов в распространенном коде, хотя в качестве оптимизации yEnc добавляет 42 к каждому исходному байту, чтобы, что не редкость, длинные последовательности нулевых байтов не требовали большого количества экранирования. Не существует RFC или другого стандартного документа, описывающего yEnc. На главной странице yEnc содержится спецификация и грамматика. На главной странице yEnc утверждается, что "все основные программы для чтения новостей были расширены для поддержки yEnc". Microsoft Outlook Express, Windows Mail и Windows Live Mail не предоставляют поддержку yEnc ни для новостей, ни для почты, но доступны плагины. Mozilla Thunderbird декодирует однокомпонентные файлы yEnc, но не может объединять многокомпонентные двоичные файлы.
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.
Проблемы
Многие программисты и администраторы новостных групп отмечали недостатки yEnc. Он страдает от многих тех же проблем, что и uuencode, причем некоторые из них были решены еще за годы до появления MIME (которая устраняла те же недостатки в uuencode). Например, yEnc требует, чтобы строки "=ybegin" и "=yend" окружали закодированный файл в теле сообщения. Эталонный кодировщик и декодировщик были включены в бесплатную версию MyNews 1.9 в ноябре того же года. yDec, бесплатный декодировщик для Win32, появился 14 ноября 2001 года. 21 марта 2002 года Agent добавил поддержку yEnc в версии 1.91. По отзывам Юргена Хельбинга выпуск был отложен на неделю. Спустя несколько дней после релиза Юрген Хельбинг написал, что Forté реализовал поддержку yEnc наилучшим образом. Stuffit Deluxe добавил поддержку yEnc в версии 8.0 в 2003 году. PowerArchiver 9.2 добавил поддержку yEnc в мае 2005 года.
Many programmers and news admins have outlined the weaknesses of yEnc. It suffers from many of the same flaws as uuencode does, a number of which had already been solved years before by MIME (which addressed the same flaws in uuencode). For example, yEnc requires the strings "=ybegin" and "=yend" to be placed around the encoded file in the message body. A reference encoder and decoder was included in the MyNews 1.9 freeware version in November that year. yDec, a freeware win32 decoder came on 14 November 2001. On 21 March 2002, Agent supported yEnc with version 1.91. Due to feedback of Juergen Helbing, the release was postponed by one week. A couple of days after the release Jürgen Helbing wrote that Forté implemented yEnc in the best way imaginable. Stuffit Deluxe added yEnc support with version 8.0 in 2003. PowerArchiver 9.2 added yEnc support in May 2005.