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é.
- Text Café → pre é bajty UTF-8 C3 A9
- Quoted-printable ich zapíše ako =C3=A9
- 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.