Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!

Str. główna i mapa serwisu, kodowanie Base64, kodowanie UTF-8, kodowanie UTF-7, kodowanie UTF-16

Opis kodowania Quoted-Printable

Kodowanie Quoted-Printable jest kodowaniem transportowym, to znaczy jest używane do przekształcenia treści przesyłki lub jej części z postaci 8-bitowej na 7-bitową. W niektórych sytuacjach stosowanie kodowania 8-bitowego jest niedozwolone z powodów technicznych. Samo kodowanie Quoted-Printable nie ma żadnego związku z charsetem np. polskich liter i jest identycznie stosowane dla ISO-8859-2, UTF-8 i wszystkich innych charsetów.

Kodowanie polega na zastąpieniu każdego znaku spoza US-ASCII i niektórych z US-ASCII ich numerami szesnastkowymi poprzedzonymi znakiem równości. Znaki US-ASCII wymagające kodowania to znak równości (w każdym wypadku) oraz znaki zapytania, spacje, znaki podkreślenia i tabulatory (tylko w nagłówkach). W pewnych spacja musi zostać zakodowana również w treści. Gdy używa się jakiegoś charsetu, w którym znaki wymagające kodowania reprezentowane są przez więcej niż jeden bajt (UTF-8, kodowania języków dalekowschodnich), osobno kodowany jest każdy bajt. Treść zakodowana Quoted-Printable może być częściowo czytelna dla człowieka, gdy kodowany jest tekst języka używającego alfabetu łacińskiego.

Kodowanie

Za przykład posłuży nam ciąg słów „żółw As”, wybrany charset to ISO-8859-2.

  1. Każdy znak wymagający zakodowania przedstawiamy w postaci szesnastkowej właściwej dla wybranego charsetu. W naszym wypadku będą to znaki „ż”, „ó” i „ł”:
    BF F3 B3
  2. Przed każdą liczbę szesnastkową wstawiamy znak równości i ewentualnie usuwamy zbędne spacje:
    BF F3 B3 → =BF=F3=B3
  3. Wstawiamy otrzymane kody w odpowiednie miejsca ciągu wyjściowego:
    =BF=F3=B3w As

Chcąc użyć tak zakodowanego ciągu w nagłówkach maila lub posta należy pamiętać o konieczności zakodowania niektórych znaków z zakresu US-ASCII w analogiczny sposób (spację jako wyjątek koduje się jako znak podkreślenia), poza tym trzeba go jeszcze uzupełnić o specjalne znaczniki. Gotowy ciąg w nagłówku będzie wyglądał tak:
=?iso-8859-2?Q?=BF=F3=B3w_As?=
Należy również uwzględnić, że zakodowany ciąg może mieć nie więcej niż 76 znaków – dłuższe ciągi należy dzielić na osobne linie.

Dekodowanie

Dekodowanie jest procesem odwrotnym do kodowania. Za przykład posłuży nam ciąg =BF=F3=B3w As, wybrany charset to ISO-8859-2. Po prostu zastępujemy wszystkie zakodowane znaki (poprzedzone znakiem równości) odpowiednimi znakami o tych numerach szesnastkowych w danym charsecie. Jeżeli dekodujemy ciąg z nagłówka, zastępujemy znaki podkreślenia spacjami.

Specjalne przypadki

Generalnie w treści nie stosuje się kodowania znaków kontrolnych ani spacji. Jedynie w przypadku wystąpienia na końcu linii (bezpośrednio przed Enterem) spacji lub tabulatora znak ten się koduje (odpowiednio jako =20 lub =09). Z uwagi na ograniczenie długości linii zakodowanej QP do 76 znaków (już w stanie zakodowanym) należy przełamać linie w taki sposób, by było wiadomo, gdzie je połączyć, w tym celu w miejscu takiego technicznego zawinięcia linii, bezpośrednio przed Enterem, wstawia się znak równości. Podczas dekodowania usuwa się samotne znaki równości na końcach linii i łączy się te linie z bezpośrednio następującymi liniami.

Przyrost objętości

Każdy bajt ciągu wyjściowego wymagający zakodowania jest reprezentowany przez trzy bajty Quoted-Printable. Sumaryczny przyrost objętości zależy od języka użytego w ciągu wyjściowym, najmniejszy będzie dla języków opartych o alfabet łaciński, największy dla greckiego, hebrajskiego, arabskiego i języków opartych o cyrylicę i dalekowschodnich – blisko trzykrotne zwiększenie objętości. Przykładowy tekst w języku polskim po zakodowaniu w Quoted-Printable zwiększył swoją objętość o ok. 16%.

licznik