Цитируется-для печати
Эта статья нуждается в дополнительных цитатах для проверки . ( январь 2021 г. ) |
Quoted-Printable , или QP-кодирование , представляет собой систему кодирования двоичного текста с использованием печатных символов ASCII ( буквенно-цифровых и знака равенства). =
) для передачи 8-битных данных по 7-битному каналу данных или, как правило, по среде, которая не является 8-битной чистой . Исторически из-за широкого спектра систем и протоколов, которые можно было использовать для передачи сообщений, электронная почта часто считалась не 8-битной, однако современные SMTP- серверы в большинстве случаев являются 8-битными и поддерживают 8BITMIME
расширение. Его также можно использовать с данными, которые содержат неразрешенные октеты или длину строки, превышающую ограничения SMTP. Он определяется как кодировка передачи контента MIME для использования в электронной почте .
QP работает с использованием знака равенства =
как escape-символ . Он также ограничивает длину строки до 76, поскольку некоторые программы имеют ограничения на длину строки.
Введение [ править ]
MIME определяет механизмы отправки других видов информации по электронной почте, включая текст на языках, отличных от английского , с использованием кодировок символов , отличных от ASCII. Однако в этих кодировках часто используются значения байтов за пределами диапазона ASCII, поэтому их необходимо дополнительно закодировать, прежде чем они станут пригодными для использования в среде, отличной от 8-битной очистки. Кодирование Quoted-Printable — это один из методов, используемый для преобразования произвольных байтов в последовательности символов ASCII. Таким образом, Quoted-Printable — это не сама схема кодирования символов, а уровень кодирования данных, который будет использоваться при некоторой байт-ориентированной кодировке символов. Кодирование QP является обратимым, что означает, что исходные байты и, следовательно, символы, отличные от ASCII, которые они представляют, могут быть восстановлены идентичным образом.
Quoted-Printable и Base64 — это две кодировки передачи контента MIME, если не учитывать тривиальные «7-битные» и «8-битные» кодировки. Если кодируемый текст не содержит большого количества символов, отличных от ASCII, то Quoted-Printable дает достаточно читаемый текст. [1] и компактный закодированный результат. С другой стороны, если входные данные содержат много 8-битных символов, то Quoted-Printable становится нечитаемым и крайне неэффективным. Base64 не читается человеком, но имеет одинаковые издержки для всех данных и является более разумным выбором для двоичных форматов или текста в алфавите, отличном от латинского алфавита .
Кодировка для печати в кавычках [ править ]
Любое 8-битное байтовое значение может быть закодировано тремя символами: =
за которыми следуют две шестнадцатеричные цифры (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
соответственно.
Строки закодированных данных Quoted-Printable не должны быть длиннее 76 символов. Чтобы удовлетворить этому требованию без изменения закодированного текста, мягкие разрывы строк при желании можно добавить . Мягкий разрыв строки состоит из =
в конце закодированной строки и не отображается как разрыв строки в декодированном тексте. Эти мягкие разрывы строк также позволяют кодировать текст без разрывов строк (или содержащий очень длинные строки) для среды, где размер строки ограничен, например ограничением в 1000 символов на строку в некоторых программах SMTP , как это разрешено RFC 2821.
В заголовках сообщений используется слегка модифицированная версия Quoted-Printable; см . MIME#Encoded-Word .
Пример [ править ]
Следующий пример представляет собой текст на французском языке (в кодировке UTF-8) с высокой частотой букв с диакритическими знаками (например, é ).
J'interdis aux marchands de vanter trop leurs marchandises. Car ils se font= vite p=C3=A9dagogues et t'enseignent comme but ce qui n'est par essence qu= 'un moyen, et te trompant ainsi sur la route =C3=A0 suivre les voil=C3=A0 b= ient=C3=B4t qui te d=C3=A9gradent, car si leur musique est vulgaire ils te = fabriquent pour te la vendre une =C3=A2me vulgaire. =E2=80=94=E2=80=89Antoine de Saint-Exup=C3=A9ry, Citadelle (1948)
Это кодирует следующую цитату:
Я запрещаю торговцам слишком хвастаться своим товаром. Поскольку они быстро становятся педагогами и учат вас как цели тому, что по сути является лишь средством, и таким образом обманывая вас на пути следования, они вскоре вас деградируют, потому что, если их музыка вульгарна, они заставляют вас продавать ее вам вульгарно. душа.
— Антуан де Сент-Экзюпери , Цитадель (1948)
См. также [ править ]
- Процентное кодирование (кодирование данных в URL-адресах, в основном используется для текста)
- Ссылка на числовые символы (кодировка текста в SGML, HTML, XML)
- Rich Text Format#Кодировка символов (компонент кодировки текста)
Примечания [ править ]
- ^ Это означает, что используется кодировка, совместимая с ASCII. Текст, закодированный в QP, например, в EBCDIC, конечно, не будет читаться.
- ^ Многоцелевые расширения почты Интернета (MIME), часть первая: формат тел интернет-сообщений. Ноябрь 1996 г. RFC 2045 # 6.7 Quoted-Printable Content-Transfer-Encoding , часть «(4) (Разрывы строк)». Проверено 18 марта 2013 г.