Text a kód / Návody

Quoted-printable alebo Base64 pre text e-mailu: čo sa mení?

E-mailové správy môžu obsahovať čitateľný text prostredníctvom prenosov s historickými líniami a obmedzeniami charakteru. Prenosové kódovanie je jednou z vrstiev tejto úlohy.

Prečítajte si spolu štítky MIME

Hlavička Content-Type môže pre telo správy určiť text/plain a znakovú sadu UTF-8. Hlavička Content-Transfer-Encoding potom môže určiť quoted-printable alebo Base64. Prvá informácia hovorí, ako sa bajty menia na znaky; druhá, ako sú tieto bajty zapísané pri prenose. Ani jedna samostatne neurčuje celý postup. Quoted-printable ponecháva mnoho tlačiteľných znakov ASCII čitateľných a iné bajty zapisuje ako znak rovnosti a dve šestnástkové číslice. Base64 kóduje skupiny bajtov do obmedzenej abecedy. Obe reprezentácie možno dekódovať; nepredstavujú šifrovanie ani overenie odosielateľa.

Nasledujte krátky príklad s diakritikou

Vezmite slovo Café. Písmeno é má v UTF-8 bajty C3 A9. V quoted-printable sa tieto bajty zapíšu ako =C3=A9, preto môže byť väčšina krátkej vety stále čitateľná. Vložený nástroj používa príklad „Café a čaj“. Výstup Base64 sa už na pôvodnú vetu nepodobá, no po dekódovaní bajtov ako UTF-8 dostanete rovnaké znaky. Vyskúšajte oba zodpovedajúce dekodéry. Znamienko rovnosti v quoted-printable uvádza zakódovaný bajt alebo mäkké zalomenie; v Base64 môže slúžiť ako výplň. Rovnaký znak teda v dvoch formátoch neznamená to isté.

Znaková sada a prenosové kódovanie sú rozdielne vrstvy.
  1. Text Café → pre é bajty UTF-8 C3 A9
  2. Quoted-printable ich zapíše ako =C3=A9
  3. Base64 používa inú tlačiteľnú podobu

Zalamovanie riadkov je súčasťou kontextu

MIME quoted-printable má pravidlá pre dĺžku riadkov, mäkké zalomenia riadkov a doslovné koncové medzery. Znamienko rovnosti na konci zakódovaného riadku môže signalizovať, že nasledujúci riadok pokračuje v rovnakých údajoch. Base64 MIME má tiež pravidlá pre dĺžku riadkov pre telá správ. Malý textový konvertor prehliadača je užitočný na zobrazenie bajtovej reprezentácie, ale produkčný odosielateľ e-mailu musí použiť úplné pravidlá MIME, nastaviť koherentné hlavičky a vyhnúť sa náhodnému opätovnému kódovaniu. Skopírovaním transportne zakódovaného tela priamo do HTML stránky sa zobrazia kódovacie znaky, nie zamýšľaný text. Dekódujte na hranici príjmu.

Keď je každá reprezentácia užitočná

Quoted-printable je často vhodná, keď je telo väčšinou ASCII text s občasnými ne-ASCII bajtmi, pretože človek môže stále kontrolovať jeho veľké časti. Base64 môže vyhovovať dátam s mnohými bajtami mimo ASCII pre tlač, hoci jeho výstup je dlhší a nepriehľadný pre bežného čitateľa. Rozhoduje obsah a prijímací protokol; nevyberajte prenosové kódovanie len preto, že jeden vzorový výstup vyzerá kratší. Rozlišujte aj hlavičky e-mailu od tela: kódované riadky predmetu používajú dodatočnú syntax hlavičky a nemožno ich považovať za obyčajné telo kódované ako quoted-printable.

Riešenie problémov s vrstvami v poradí

Ak sa v e-maile zobrazuje „Caf=C3=A9“, najskôr skontrolujte, či bolo kódovanie prenosu dekódované. Ak po dekódovaní zobrazí náhradné symboly, skontrolujte deklarovanú znakovú sadu a skutočné bajty. Ak sa objaví dvojito zakódovaný text, zistite, ktorý systém ho zakódoval dvakrát, namiesto toho, aby ste naslepo spúšťali dekodér, kým nebude vyzerať správne. Ponechajte si jednu originálnu vzorku UTF-8, štítky MIME a oba zakódované príklady pre opakovateľný test. Nástroje MultiVerto ilustrujú transformácie zadaného textu; nezostavujú ani neoverujú úplnú e-mailovú správu.

Pri skúšaní správneho dekódovania posielajte najprv krátku správu s obyčajnými písmenami aj diakritikou. Uložte si pôvodný text, použitú znakovú sadu, spôsob prenosového kódovania a surovú podobu tela správy. Keď príjemca zobrazí chybné znaky, viete potom určiť, či sa pokazili bajty, hlavička alebo samotné dekódovanie. Samotný výsledok prevodníka bez hlavičiek nestačí na diagnostiku celej správy.

Vyskúšať konvertor

Zakódujte krátku frázu s diakritikou ako v úvodzovkách, ktorú je možné vytlačiť.

Quoted-printable podľa RFC 2045 zapisuje bajty UTF-8 tlačiteľnými znakmi ASCII a hexadecimálnymi únikmi =HH. Preveďte údaje lokálne v prehliadači.

Otvoriť celý konvertor

Ďalšie návody

Návody na konverzie

Prezrieť návody