Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Введение [ править ]

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

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

Кодировка с цитированием и печатью [ править ]

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

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

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

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

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

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

Пример [ править ]

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

J'interdis aux marchands de vanter trop leurs marchandises. Автомобиль ils se font =vite p = C3 = A9dagogues et t'enseignent com but ce qui n'est par essence qu ='un moyen, et te trompant ainsi sur la route = C3 = A0 suivre les voil = C3 =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. ^ Это означает, что используется кодировка, совместимая с ASCII. Текст в кодировке QP, например, в EBCDIC , конечно, не будет читаться.
  2. ^ Многоцелевые расширения электронной почты Интернета (MIME) Часть первая: Формат тел сообщений Интернета. Ноябрь 1996 г. RFC 2045 # 6.7 Кодирование передачи содержимого для печати в кавычках , часть "(4) (разрывы строк)". Проверено 18 марта 2013 года.

Подобные схемы кодирования [ править ]

  • Процентное кодирование ( кодирование данных в URL-адресах, в основном используется для текста)
  • Ссылка на числовые символы (кодировка текста в SGML, HTML, XML)
  • Rich Text Format # Кодировка символов (компонент кодировки текста)


Внешние ссылки [ править ]

  • RFC  1521 (устаревший)
  • RFC  2045 (MIME)
    • RFC 2045 - 6.7. Цитируемая-печать-передача-кодирование