16.13.4 Кодирование содержания
RFC 822 определил исходной формат для текстовых сообщений Интернета. Содержание почтового сообщения состоит из последовательности строк, завершающихся <CR><LF>. Максимальная длина каждой строки (включая <CR><LF>) определена в 1000 символов.
Как должны кодироваться для пересылки различные типы содержания сообщений MIME? Методы кодирования определены отдельно для каждого типа. Например, для SMTP можно использовать:
■ Неэффективный способ кодирования, который представляет двоичные данные как текст, если можно будет доставить сообщение на принимающий агент пересылки почты только таким способом.
■ Эффективный способ кодирования, когда получатель поддерживает такой способ.
Методы кодирования представлены в таблице 16.3. Если используется не обычный метод NVT USASCII, а другой, то он должен быть явным образом определен в заголовке Content-Transfer-Encoding. Например:
Content-Transfer-Encoding: base64
Content-Transfer-Encoding: Quoted-printable
Таблица 16.3 Методы копирования
Метод | Описание |
---|---|
7bit | Обычные строки текста NVT USASCII. |
quoted-printable | Содержимое по большей части представляет собой обычный текст ASCII, но дополнительно имеется несколько особых символов. Каждый такой символ представлен специальной последовательностью обычных текстовых символов. |
base64 | Все содержание отображается к виду, представленному обычными символами. |
8bit | Сообщение организовано как последовательность строк, заканчивающихся на <CR><LF> и имеющих длину не более 1000 символов. Однако могут быть включены 8- разрядные коды. |
binary | Правильное представление двоичных данных. |
Любой экспериментальный метод кодирования должен иметь название, начинающееся с 'х'. |
16.13.5 Метод кодирования указанными печатными символами
Метод кодирования указанными печатными символами (quoted-printable encoding method) используется для сообщений, содержащих только небольшое число символов, не принадлежащих основному множеству ASCII. Эти символы отображаются в специальные последовательности, в то время как большая часть сообщения остается в своей естественной форме. Кодирование выполняется как:
Например, символ перевода формата (X'0C) будет закодирован как =
16.13.6 Метод кодирования Base64
Метод кодирования Base64 преобразует любой тип данных к большему в 3 раза количеству текстовых символов. Данные разделяются на части по три 8-разрядных, байта. Например:
10001000 00110011 11110001
Для преобразования эта последовательность сначала разделяется на четыре 6-разрядные группы:
100010 000011 001111 110001
Каждая группа интерпретируется как число:
34 3 15 49
Полученные числа заменяются соответствующими символами из таблицы 16.4.
Таблица 16.4 Кодирование Base64
Значение | Код | Значение | Код | Значение | Код | Значение | Код |
---|