Přečtěte si štítky MIME společně
Hlavička Content-Type může pro tělo zprávy určit text/plain a znakovou sadu UTF-8. Hlavička Content-Transfer-Encoding pak může určit quoted-printable nebo Base64. První informace říká, jak se bajty převádějí na znaky; druhá, jak jsou tyto bajty zapsány při přenosu. Ani jedna sama neurčuje celý postup. Quoted-printable ponechává mnoho tisknutelných znaků ASCII čitelných a jiné bajty zapisuje jako rovnítko a dvě šestnáctkové číslice. Base64 kóduje skupiny bajtů do omezené abecedy. Obě reprezentace lze dekódovat; nejde o šifrování ani ověření odesílatele.
Postupujte podle krátkého příkladu s diakritikou
Vezměte slovo Café. Písmeno é má v UTF-8 bajty C3 A9. V quoted-printable se tyto bajty zapisují jako =C3=A9, takže většina krátké věty může zůstat čitelná. Vložený nástroj používá příklad „Café a čaj“. Výstup Base64 se původní větě už nepodobá, ale po dekódování bajtů jako UTF-8 získáte stejné znaky. Vyzkoušejte oba odpovídající dekodéry. Rovnítko v quoted-printable uvádí kódovaný bajt nebo měkké zalomení; v Base64 může sloužit jako výplň. Stejný znak tedy ve dvou formátech neznamená totéž.
- Text Café → pro é bajty UTF-8 C3 A9
- Quoted-printable je zapíše jako =C3=A9
- Base64 používá jinou tisknutelnou podobu
Zalamování řádků je součástí kontextu
MIME quoted-printable má pravidla pro délku řádků, měkké konce řádků a doslovné koncové mezery. Znaménko rovná se na konci zakódovaného řádku může signalizovat, že následující řádek pokračuje ve stejných datech. Base64 MIME má také pravidla pro délku řádků pro těla zpráv. Malý převodník textu v prohlížeči je užitečný pro zobrazení bajtové reprezentace, ale produkční odesílatel e-mailu musí použít úplná pravidla MIME, nastavit koherentní záhlaví a vyhnout se náhodnému překódování. Zkopírováním transportně zakódovaného těla přímo do stránky HTML se zobrazí kódovací znaky, nikoli zamýšlený text. Dekódujte na hranici příjmu.
Když je každá reprezentace užitečná
Quoted-printable je často vhodné, když tělo je většinou text ASCII s občasnými ne-ASCII bajty, protože člověk může stále prohlížet jeho velké části. Base64 může vyhovovat datům s mnoha bajty mimo tisknutelné ASCII, ačkoli jeho výstup je delší a neprůhledný pro běžného čtenáře. Rozhoduje obsah a přijímací protokol; nevybírejte přenosové kódování pouze proto, že jeden ukázkový výstup vypadá kratší. Rozlišujte také záhlaví e-mailu od těla: zakódované řádky předmětu používají další syntaxi záhlaví a nelze je považovat za běžné tělo kódované jako quoted-printable.
Odstraňte problémy s vrstvami v pořadí
Pokud se v e-mailu zobrazuje „Caf=C3=A9“, nejprve zkontrolujte, zda bylo kódování přenosu dekódováno. Pokud po dekódování zobrazí náhradní symboly, zkontrolujte deklarovanou znakovou sadu a skutečné bajty. Pokud se objeví dvojitě zakódovaný text, určete, který systém jej zakódoval dvakrát, než spouštět dekodér naslepo, dokud nebude vypadat správně. Uschovejte jeden původní vzorek UTF-8, štítky MIME a oba zakódované příklady pro opakovatelný test. Nástroje MultiVerto ilustrují transformace zadaného textu; neshromažďují ani neověřují úplnou e-mailovou zprávu.
Při zkoušení správného dekódování pošlete nejprve krátkou zprávu s obyčejnými písmeny i diakritikou. Uložte původní text, použitou znakovou sadu, způsob přenosového kódování a surovou podobu těla zprávy. Když příjemce zobrazí chybné znaky, můžete pak určit, zda se změnily bajty, hlavička nebo samotné dekódování. Samotný výsledek převodníku bez hlaviček nestačí k diagnostice celé zprávy.