Quoted-Printable – zgodne z MIME kodowanie transportowe zdefiniowane w RFC 2045 (6.7)[1].
Kodowanie to wykorzystuje się głównie w poczcie elektronicznej dla różnych języków narodowych korzystających z alfabetów łacińskich do kodowania znaków spoza zestawu ASCII, czyli których kody są większe od 127 (tzn. których najstarszy bit równy jest 1). Bywa też ono wykorzystywane do wysyłania wiadomości na grupy dyskusyjne, choć jest to niezalecane.
Kodowanie quoted-printable słabo nadaje się do przesyłania danych binarnych, ponieważ dla równomiernego rozkładu wartości bajtów (np. w plikach skompresowanych) daje średni narzut rzędu 225%, w porównaniu do 33% dla kodowania base64.
Nieco zmodyfikowana wersja tego kodowania, zwana Q-encoding, jest wykorzystywana przy rozszerzonym zapisie pól nagłówka wiadomości internetowych i jest opisana w RFC 2047 (4.2)[2].
Quoted-Printable pozostawia bez zmiany wszystkie bajty o wartościach mniejszych niż 127, które nie są znakami sterującymi ASCII lub spacją (czyli o wartościach większych od 32) i nie są znakiem równości =
(kod 61, szesnastkowo 3D).
Pozostałe bajty zamienia na 3-bajtowe napisy zakodowane w ASCII, reprezentujące kody szesnastkowe tych bajtów poprzedzone znakami modyfikacji, którymi są znaki równości =
. Sam znak równości, w celu uniknięcia wieloznaczności, jest zastępowany ciągiem =3D
. Znaki tabulacji (kod 9) i spacji (kod 32, szesnastkowo 20) zapisywane są bez zmian, chyba że znajdują się na końcu kodowanej linii, wtedy mogą przyjąć odpowiednio postać =09
i =20
. Alternatywnym rozwiązaniem, aby znaki tabulacji i spacji nie znalazły się na końcu kodowanej linii, jest wstawianie na końcu każdej z nich znaku równości =
, który działa wtedy jak miękkie łamanie linii.
Maksymalna długość każdej zakodowanej linii wynosi 76 znaków. Jeśli w danym miejscu ma być wstawiony znak końca linii, to musi być on umieszczony jako sekwencja CR (kod 13) LF (kod 10) w systemie ASCII, a nie jako szesnastkowe wartości zakodowane w postaci =0D=0A
.
Poniższy tekst jest w języku francuskim z francuskimi literami diakrytycznymi, które są zakodowane zwykle na 2 bajtach w formacie zapisu UTF-8:
J'interdis aux marchands de vanter trop leur marchandises. Car ils se font vite pédagogues et t'enseignent comme 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 pour te la vendre une âme vulgaire.
Po zakodowaniu powyższego tekstu w Quoted-Printable otrzymać można następującą postać:
J'interdis aux marchands de vanter trop leur 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 bi= ent=C3=B4t qui te d=C3=A9gradent, car si leur musique est vulgaire ils te f= abriquent pour te la vendre une =C3=A2me vulgaire.