Цитата для печати - Quoted-printable

Цитата для печати, или же Кодировка QP, это двоичное кодирование текста система с использованием печатаемые символы ASCII (буквенно-цифровой и знак равенства =) передавать 8 бит данные по 7-битному пути данных или, как правило, по среде, которая не 8-битный чистый.[1] Его также можно использовать с данными, которые содержат недопустимые октеты или длина строки превышает ограничения SMTP. Он определяется как MIME кодирование передачи контента для использования в электронное письмо.

QP работает со знаком равенства = как escape-символ. Он также ограничивает длину строки до 76, поскольку некоторые программы имеют ограничения на длину строки.

Вступление

MIME определяет механизмы для отправки других видов информации по электронной почте, включая текст на языках, отличных от английский, с помощью кодировки символов кроме ASCII. Однако в этих кодировках часто используются байтовые значения вне диапазона ASCII, поэтому их необходимо кодировать дополнительно, прежде чем они станут пригодными для использования в среде, отличной от 8-битной чистой. Кодирование с кавычками - это один из методов, используемых для отображения произвольных байтов в последовательности символов ASCII. Итак, Quoted-Printable - это не сама схема кодирования символов, а уровень кодирования данных, который будет использоваться в некоторых байтовый кодировка символов. Кодирование QP является обратимым, то есть исходные байты и, следовательно, символы, отличные от ASCII, которые они представляют, могут быть восстановлены идентичным образом.

Цитата для печати и Base64 являются двумя кодировками передачи содержимого MIME, если тривиальное «7-битное» и «8-битное» кодирование не учитывается. Если кодируемый текст не содержит много символов, отличных от ASCII, то Quoted-Printable дает довольно читаемый[2] и компактный закодированный результат. С другой стороны, если на входе много 8-битных символов, Quoted-Printable становится нечитаемым и крайне неэффективным. Base64 не читается человеком, но имеет единообразные накладные расходы для всех данных и является более разумным выбором для двоичных форматов или текста в сценарий кроме Латинский шрифт.

Кодировка с кавычками

Любое 8-битное байтовое значение может быть закодировано 3 символами: = за которыми следуют два шестнадцатеричный цифры (09 или же АF), представляющий числовое значение байта. Например, ASCII подача формы символ (десятичное значение 12) может быть представлен как "= 0C", а знак равенства ASCII (десятичное значение 61) должен быть представлен = 3D. Все символы, кроме печатаемых символов ASCII или символы конца строки (но также =) должны быть закодированы таким образом.

Все печатаемые символы ASCII (десятичные значения от 33 до 126) могут быть представлены сами по себе, кроме = (десятичное 61, шестнадцатеричное 3D, поэтому = 3D).

ASCII вкладка и Космос символы, десятичные значения 9 и 32, могут быть представлены сами по себе, за исключением случаев, когда эти символы появляются в конце закодированной строки. В этом случае их нужно будет экранировать как =09 (табуляция) или =20 (пробел) или после него следует = (мягкий разрыв строки) как последний символ закодированной строки. Это последнее решение действительно, потому что оно не позволяет табуляции или пробелу быть последним символом закодированной строки.

Если кодируемые данные содержат значимые разрывы строк, они должны быть закодированы как последовательность ASCII CR LF, а не как их исходные значения байтов, ни напрямую, ни через = приметы. И наоборот, если байтовые значения 13 и 10 имеют значение, отличное от конца строки (в типах носителей,[3] например), то они должны быть закодированы как = 0D и = 0А соответственно.

Строки закодированных данных в кавычках не должны быть длиннее 76 символов. Чтобы удовлетворить это требование без изменения закодированного текста, мягкие разрывы строк могут быть добавлены по желанию. Мягкий разрыв строки состоит из = в конце закодированной строки и не отображается как разрыв строки в декодированном тексте. Эти мягкие разрывы строк также позволяют кодировать текст без разрывов строк (или содержащих очень длинные строки) для среды, в которой размер строки ограничен, например, 1000 символов на строку для некоторых SMTP программное обеспечение, как разрешено RFC 2821.

В заголовках сообщений используется слегка измененная версия Quoted-Printable; видеть MIME # закодированное слово.

Пример

В следующем примере показан французский текст (в кодировке UTF-8) с высокой частотой букв с диакритическими знаками (например, é).

J'interdis aux marchands de vanter trop leurs marchandises. Автомобиль ils se font = vite p = C3 = A9dagogues et t'enseignentcom but ce qui n'est par essence qu = 'un moyen, et te trompant ainsi sur la route = C3 = A0 suivre les voil = C3 == A0 bient = C3 = B4t qui te d = C3 = A9gradent, car si leur musique est vulgaire il = s te fabriquent pour te la vendre une = C3 = A2me vulgaire. = E2 = 80 = 94 = E2 = 80 = 89 Антуан де Сент-Экзюп = C3 = A9ry, Цитадель (1948)


Это кодирует следующую цитату:

J'interdis aux marchands de vanter trop leurs marchandises. Car ils se font vite pédagogues et t'enseignent Com but ce qui n'est par Essence qu'un moyen, et te trompant ainsi sur la route à suivre les voilà bientôt qui te dégradent, car si leur musique est vulgaire ils te fabriquent для te la vendre une âme vulgaire.

— Антуан де Сент-Экзюпери, Цитадель (1948)

Примечания

  1. ^ Исторически сложилось так, что из-за большого количества систем и протоколов, которые можно было использовать для передачи сообщений, часто предполагалось, что электронная почта не является 8-битной, но современные ESMTP серверы находятся в большинстве случаев 8-битный чистый; (видеть 8BITMIME ).
  2. ^ Это означает, что используется кодировка, совместимая с ASCII. Текст в кодировке QP, например, EBCDIC не читается конечно.
  3. ^ Многоцелевые расширения почты Интернета (MIME). Часть первая: формат тел сообщений в Интернете. Ноябрь 1996 г. RFC 2045 # 6.7 Кодирование передачи содержимого с цитируемой печатью, часть «(4) (Разрывы строк)». Проверено 18 марта 2013 года.

Подобные схемы кодирования

внешняя ссылка

  • RFC  1521 (устаревший)
  • RFC  2045 (MIME)