Введение

Компьютерная система, корректно обрабатывающая 8-битные кодировки символов.

"8-битная чистота" – это характеристика компьютерных систем, каналов связи и других устройств и программного обеспечения, которые обрабатывают 8-битные кодировки символов, не интерпретируя ни один байт как управляющий код в канале передачи данных.

История

До начала 1990-х годов многие программы и каналы передачи данных были ориентированы на символы и рассматривали некоторые символы, например, ETX, как управляющие символы. Другие предполагали поток семибитных символов со значениями от 0 до 127; например, стандарт ASCII использовал только семь бит на символ, избегая восьмибитного представления для экономии затрат на передачу данных. На компьютерах и каналах связи, использующих восьмибитные байты, старший бит каждого байта оставался свободным для использования в качестве бита четности, флаг-бита или бита управления метаданными. Семибитные системы и каналы связи не могут напрямую обрабатывать более сложные символы, которые широко используются в странах с нелатинскими алфавитами. Бинарные файлы, состоящие из октетов, не могут быть переданы напрямую по семибитным каналам передачи данных. Для решения этой проблемы были разработаны кодировки, преобразующие двоичные данные в текст, использующие только семибитные символы ASCII. Некоторые из этих кодировок: uuencoding, Ascii85, SREC, BinHex, Kermit и Base64 из MIME. Системы на базе EBCDIC не могут обрабатывать все символы, используемые в данных, закодированных с помощью UUencoding. Однако кодировка Base64 не имеет этой проблемы.

SMTP и NNTP 8-битная чистота

Исторически для передачи сообщений использовались различные среды, некоторые из которых поддерживали только 7-битные данные, поэтому 8-битные сообщения имели высокие шансы на искажение при передаче в 20-м веке. Однако некоторые реализации не обращали внимания на формальные ограничения для 8-битных данных и позволяли передавать байты с установленным старшим битом. Такие реализации называют "чистыми для 8 бит" (8 bit clean). В общем, коммуникационный протокол считается "чистым для 8 бит", если он корректно передает старший бит каждого байта в процессе обмена данными. Многие ранние стандарты коммуникационных протоколов, такие как (для SMTP), (для NNTP) и , были разработаны для работы через такие "7-битные" каналы связи. Они специально требовали использования набора символов ASCII, "передаваемого в виде 8-битного байта с обнуленным старшим битом", и некоторые из них явно ограничивали все данные 7-битными символами. В течение первых нескольких десятилетий существования сетей электронной почты (с 1971 года до начала 1990-х годов) большинство сообщений электронной почты представляли собой простой текст в 7-битном наборе символов US ASCII. Определение SMTP, как и его предшественник , ограничивает Интернет-почту строками (не более 1000 символов) из 7-битных символов US ASCII. Поле заголовка Content Transfer Encoding=binary требует "чистую для 8 бит" транспортировку. указывает, что "NNTP работает через любой надежный двунаправленный 8-битный канал передачи данных" и изменяет набор символов для команд на UTF-8. Однако, все еще ограничивает набор символов ASCII, включая и MIME-кодирование данных, не входящих в ASCII. Интернет-сообщество обычно добавляет функциональность посредством расширений, обеспечивая связь в обоих направлениях между обновленными и необновленными машинами, вместо того, чтобы объявлять ранее соответствующие стандартам устаревшие программы "неработоспособными" и требовать обновления всего программного обеспечения во всем мире до последней версии стандарта. В середине 1990-х годов люди возражали против "просто отправки 8 бит (на SMTP-серверы)", возможно, из-за опасения, что "просто отправка 8 бит" является неявным объявлением о том, что ISO 8859-1 станет новым "стандартным кодированием", заставляя всех в мире использовать один и тот же набор символов. Вместо этого, рекомендуемый способ использования каналов, "чистых для 8 бит", между машинами – использовать расширение ESMTP 8BITMIME для тела сообщения и расширение SMTP SMTPUTF8 для заголовков сообщения. Несмотря на это, некоторые почтовые агенты передачи, в частности Exim и qmail, пересылают почту на серверы, которые не рекламируют поддержку 8BITMIME, не выполняя преобразование в 7-битный MIME (обычно quoted printable, "QP-преобразование"), требуемое этим стандартом. Такое отношение "просто отправь 8" на самом деле не вызывает проблем на практике, поскольку практически все современные почтовые серверы "чисты для 8 бит".