Cytowane do druku - Quoted-printable

Cytowane zadrukowania lub kodowania JO , to kodowanie transportowe systemu za pomocą druku znaków ASCII ( alfanumeryczne i równa znaku = ), aby przekazywać 8-bitowych danych w ścieżce danych 7-bitowy lub ogólnie na nośniku, który jest nie 8-bitowy czysty . Historycznie, 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-bitowa – jednak nowoczesne serwery SMTP w większości przypadków czyste 8-bitowe i obsługują 8BITMIMErozbudowa. Może być również używany z danymi, które zawierają niedozwolone oktety lub długości linii przekraczające limity SMTP. Jest zdefiniowany jako kodowanie transferu 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 wysyłania innych rodzajów informacji w wiadomościach e-mail, w tym tekstu w językach innych niż angielski , przy użyciu kodowania znaków innego niż ASCII. Jednak te kodowania często używają wartości bajtowych spoza zakresu ASCII, więc muszą być dalej zakodowane, zanim będą odpowiednie do użycia w środowisku innym niż 8-bitowy. Kodowanie Quoted-Printable jest jedną z metod używanych do mapowania dowolnych bajtów na sekwencje znaków ASCII. Tak więc Quoted-Printable nie jest samym schematem kodowania znaków, ale warstwą kodowania danych, która ma być używana w przypadku kodowania znaków zorientowanego bajtowo . Kodowanie QP jest odwracalne, co oznacza, że ​​oryginalne bajty, a tym samym reprezentowane przez nie znaki spoza ASCII, mogą być identycznie odzyskane.

Quoted-Printable i Base64 to dwa kodowania transferu zawartości MIME, jeśli trywialne kodowanie "7bit" i "8bit" nie są liczone. Jeśli tekst, który ma być zakodowany, nie zawiera wielu znaków spoza zestawu ASCII, to wynik cytowany-drukowalny daje dość czytelny i zwarty zakodowany wynik. Z drugiej strony, jeśli dane wejściowe mają wiele znaków 8-bitowych, Cytat-drukowalny staje się zarówno nieczytelny, jak i wyjątkowo nieefektywny. Base64 nie jest czytelny dla człowieka, ale ma jednolite obciążenie dla wszystkich danych i jest rozsądniejszym wyborem w przypadku formatów binarnych lub tekstu w skrypcie innym niż skrypt łaciński .

Cytowane kodowanie do druku

Dowolna 8-bitowa wartość bajtu może być zakodowana za pomocą 3 znaków: an, =po których następują dwie cyfry szesnastkowe (0–9 lub A–F) reprezentujące wartość numeryczną bajtu. Na przykład znak wysuwu 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 lub znaków końca wiersza (ale także =) muszą być zakodowane w ten sposób.

Wszystkie drukowane znaki ASCII (wartości dziesiętne od 33 do 126) mogą być reprezentowane przez siebie, z wyjątkiem =(dziesiętne 61, szesnastkowe 3D, a zatem =3D).

Znaki tabulacji i spacji ASCII , wartości dziesiętne 9 i 32, mogą być reprezentowane przez siebie, chyba że znaki te pojawią się na końcu zakodowanej linii. W takim przypadku musiałyby one zostać zmienione jako =09(tabulator) lub =20(spacja) lub po nich =(miękki podział wiersza) jako ostatni znak zakodowanej linii. To ostatnie rozwiązanie jest prawidłowe, ponieważ zapobiega temu, aby tabulator lub spacja były ostatnim znakiem zakodowanego wiersza.

Jeśli kodowane dane zawierają znaczące znaki końca linii, muszą być zakodowane jako sekwencja ASCII CR LF, a nie jako ich oryginalne wartości bajtowe, ani bezpośrednio, ani za pomocą =znaków. I odwrotnie, jeśli wartości 13 i 10 bajtów mają znaczenie inne niż koniec wiersza (na przykład w typach mediów), muszą być zakodowane odpowiednio jako =0Di =0A.

Wiersze zakodowanych danych, które można drukować w cudzysłowie, nie mogą być dłuższe niż 76 znaków. Aby spełnić ten wymóg bez zmiany zakodowanego tekstu, w razie potrzeby można dodać miękkie podziały wierszy . Miękki podział wiersza składa się =z końca zakodowanej linii i nie pojawia się jako podział wiersza w dekodowanym tekście. Te miękkie łamania wierszy umożliwiają również kodowanie tekstu bez łamania wierszy (lub zawierającego bardzo długie wiersze) w środowisku, w którym rozmiar wiersza jest ograniczony, na przykład limit 1000 znaków na wiersz w niektórych programach SMTP , na co zezwala RFC 2821.

Nieco zmodyfikowana wersja Quoted-Printable jest używana w nagłówkach wiadomości; zobacz MIME#Encoded-Word .

Przykład

Poniższy przykład to tekst w języku francuskim (zakodowany w UTF-8), z dużą liczbą liter ze znakami diakrytycznymi (takimi jak é ).

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 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, Citadelle (1948)

To koduje następujący cytat:

J'interdis aux marchands de vanter trop leurs marchandises. Car ils se font vite pedagogów et t'enseignent comme ale 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 te la vendre une âme vulgaire.

—  Antoine de Saint-Exupéry , Cytadela (1948)

Zobacz też

Uwagi

  1. ^ Oznacza to, że używane jest kodowanie zgodne z ASCII. Tekst zakodowany w QP w np. EBCDIC nie byłby oczywiście czytelny.
  2. ^ Wielozadaniowe rozszerzenia poczty internetowej (MIME) Część pierwsza: Format treści wiadomości internetowych. Listopad 1996. RFC 2045 # 6.7 Cytowana-drukowalna zawartość-Transfer-Encoding , część „(4) (Przełamania linii)”. Źródło 18 marca 2013 .

Linki zewnętrzne

  • RFC  1521 (przestarzałe)
  • RFC  2045 (MIME)