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ł! Do you want to support owner of this site? Click here and donate to his account some amount, he will be able to use it to pay for any of our services, including removing this ad.

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