Cytat-do druku
Quoted-Printable lub kodowanie QP to system kodowania binarnego na tekst wykorzystujący drukowalne znaki ASCII ( alfanumeryczne i znak równości =
) do przesyłania 8-bitowych danych 7-bitową ścieżką danych lub, ogólnie, przez nośnik, który nie jest czysty 8-bitowo . Historycznie rzecz biorąc, ze względu na szeroką gamę systemów i protokołów, które można wykorzystać do przesyłania wiadomości, często zakładano, że poczta e-mail nie jest czysta 8-bitowo – jednak nowoczesne serwery SMTP są w większości przypadków 8-bitowy czysty i obsługuje rozszerzenie 8BITMIME .
Można go także używać w przypadku danych zawierających niedozwolone oktety lub linie o długości przekraczającej limity SMTP. Jest ono zdefiniowane jako kodowanie przesyłania treści MIME do użytku w wiadomościach e-mail .
QP działa przy użyciu znaku równości =
jako znaku ucieczki . Ogranicza również długość linii do 76, ponieważ niektóre programy mają ograniczenia długości linii.
Wstęp
MIME definiuje mechanizmy przesyłania innego rodzaju informacji w wiadomościach e-mail, w tym tekstów w językach innych niż angielski , przy użyciu kodowania znaków innego niż ASCII. Jednak w tych kodowaniach często używane są wartości bajtów spoza zakresu ASCII, dlatego należy je dodatkowo zakodować, zanim nadadzą się do użycia w środowisku innym niż 8-bitowe. Kodowanie Quoted-Printable to jedna z metod stosowanych do mapowania dowolnych bajtów na sekwencje znaków ASCII. Zatem Quoted-Printable nie jest samym schematem kodowania znaków, ale warstwą kodowania danych, która może być używana w niektórych systemach zorientowanych na bajty kodowanie znaków. Kodowanie QP jest odwracalne, co oznacza, że oryginalne bajty, a tym samym reprezentujące je znaki inne niż ASCII, można odzyskać w identyczny sposób.
Quoted-Printable i Base64 to dwa kodowania przesyłania treści MIME, jeśli nie liczy się trywialne kodowanie „7-bitowe” i „8-bitowe”. Jeśli tekst do zakodowania nie zawiera wielu znaków innych niż ASCII, wówczas funkcja Quoted-Printable daje w miarę czytelny i zwarty zakodowany wynik. Z drugiej strony, jeśli dane wejściowe zawierają wiele znaków 8-bitowych, funkcja Quoted-Printable staje się zarówno nieczytelna, jak i wyjątkowo nieefektywna. Base64 nie jest czytelny dla człowieka, ale ma jednolity narzut dla wszystkich danych i jest rozsądniejszym wyborem w przypadku formatów binarnych lub tekstu zapisanego w alfabecie innym niż alfabet łaciński .
Kodowanie cytowane i nadające się do wydruku
Dowolna 8-bitowa wartość bajtu może być zakodowana przy użyciu 3 znaków: an =
, po którym następują dwie cyfry szesnastkowe (0–9 lub A–F) reprezentujące wartość liczbową bajtu. Na przykład podawania formularza ASCII (wartość dziesiętna 12) może być reprezentowany przez =0C
, a znak równości ASCII (wartość dziesiętna 61) musi być reprezentowany przez =3D
. Wszystkie znaki z wyjątkiem drukowalnych znaków ASCII i znaków końca wiersza (ale także =
) muszą być zakodowane w ten sposób.
Wszystkie drukowalne znaki ASCII (wartości dziesiętne od 33 do 126) mogą być reprezentowane przez siebie, z wyjątkiem =
(dziesiętne 61, szesnastkowe 3D, zatem =3D
).
tabulatora ASCII i spacje , wartości dziesiętne 9 i 32, mogą być reprezentowane same przez się, chyba że znaki te pojawią się na końcu zakodowanej linii. W takim przypadku należy je zmienić jako =09
(tabulator) lub =20
(spacja) lub poprzedzać je znakiem =
(miękkie zakończenie wiersza) jako ostatnim znakiem zakodowanej linii. To ostatnie rozwiązanie jest prawidłowe, ponieważ zapobiega temu, aby tabulator lub spacja były ostatnim znakiem zakodowanej linii.
Jeśli kodowane dane zawierają znaczące podziały wierszy, muszą być zakodowane jako sekwencja ASCII CR LF, a nie jako ich oryginalne wartości bajtów, ani bezpośrednio, ani poprzez znaki = .
I odwrotnie, jeśli wartości bajtów 13 i 10 mają znaczenie inne niż koniec linii (na przykład w typach mediów), wówczas muszą być zakodowane odpowiednio jako =0D
i =0A .
Wiersze zakodowanych danych, które można wydrukować, nie mogą być dłuższe niż 76 znaków. Aby spełnić ten wymóg bez zmiany zakodowanego tekstu, można w razie potrzeby dodać miękkie podziały wierszy . Miękki podział wiersza składa się z =
na końcu zakodowanej linii i nie pojawia się jako podział wiersza w zdekodowanym tekście. Te miękkie podziały wierszy umożliwiają również kodowanie tekstu bez łamania wierszy (lub zawierającego bardzo długie linie) w środowisku, w którym rozmiar linii jest ograniczony, na przykład w przypadku limitu 1000 znaków w wierszu w przypadku niektórych programów SMTP, zgodnie z normą RFC 2821 .
W nagłówkach wiadomości używana jest nieco zmodyfikowana wersja Quoted-Printable; zobacz MIME#Encoded-Word .
Przykład
Poniższy przykład to tekst francuski (zakodowany w formacie UTF-8) z dużą liczbą liter ze znakami diakrytycznymi (takimi jak é ) .
J'interdis aux marchands de vanter trop leurs marchandises. Car ils se czcionka= vite p=C3=A9dagogues et t'enseignent comme but ce qui n'est par esencja qu= 'un moyen, et te trompant ainsi sur la Route =C3=A0 suivre les voil=C3= =A0 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=89Antoine de Saint-Exup=C3=A9ry, Cytadela (1948)
To koduje następujący cytat:
J'interdis aux marchands de vanter trop leurs marchandises. Car ils se czcionka vite pédagogues et t'enseignent comme but ce qui n'est par esencja 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.
— Antoine de Saint-Exupéry , Cytadela (1948)
Zobacz też
- Kodowanie procentowe (kodowanie danych w adresach URL, używane głównie w przypadku tekstu)
- Odniesienie do znaku numerycznego (kodowanie tekstu w SGML, HTML, XML)
- Rich Text Format#Kodowanie znaków (element kodowania tekstu)
Notatki
- ^ Oznacza to, że używane jest kodowanie zgodne z ASCII. Tekst zakodowany w QP, np. w EBCDIC, nie byłby oczywiście czytelny.
- ^ Uniwersalne rozszerzenia poczty internetowej (MIME), część pierwsza: Format treści wiadomości internetowych. Listopad 1996. RFC 2045 nr 6.7 Kodowanie przesyłania treści do druku , część „(4) (podziały wierszy)”. Źródło 18 marca 2013 r.