Mo₧nosti pou₧φvat v t∞le i v hlaviΦce zprßv jinΘ ne₧ ΦistΘ ASCII znaky, stejn∞ tak jako mo₧nosti p°iklßdat ke zprßvßm nejr∙zn∞jÜφ p°φlohy p°evß₧n∞ netextovΘho charakteru, stojφ v cest∞ pouze sedmibitov² (garantovan²) charakter p°enosovΘho mechanismu, dan² pou₧it²m protokolem SMTP. Standard MIME proto musφ definovat zp∙sob, jak²m osmibitovΘ znaky (resp. osmibitovΘ byty) p°evΘst p°ed p°enosem na znaky sedmibitovΘ, a po p°enosu je zase vrßtit zp∞t do p∙vodnφ podoby. Jde vlastn∞ o pot°ebu definovat vhodn² zp∙sob k≤dovßnφ (anglicky: encoding).
MIME definuje dokonce dva takovΘto zp∙soby k≤dovßnφ, oznaΦovanΘ jako "quoted-printable" a "Base64", ale nep°edepisuje striktn∞ kter² mß b²t kdy pou₧it. Pouze doporuΦuje pou₧itφ k≤dovßnφ "quoted printable" tam, kde se v²chozφ text p°φliÜ neodliÜuje od ΦistΘho ASCII textu (tj. neobsahuje p°φliÜ mnoho "cizorod²ch" znak∙), a alternativnφ k≤dovßnφ Base64 tam, kde je odliÜnost od ΦistΘho ASCII textu v∞tÜφ. Logika, ze kterΘ toto doporuΦenφ vychßzφ, je dßna konkrΘtnφ povahou obou zp∙sob∙ k≤dovßnφ:
- K≤dovßnφ "quoted-printable" ponechßvß ΦistΘ ASCII znaky (tj. znaky znßzornitelnΘ v 7 bitech) tak jak jsou, a k≤duje pouze ostatnφ znaky. To Φinφ takov²m zp∙sobem, ₧e Φφseln² k≤d osmibitovΘho znaku vyjßd°φ jako dvojici hexadecimßlnφch Φφslic (psan²ch velk²mi pφsmeny), a pro pot°ebnΘ odliÜenφ od p∙vodnφch ASCII znak∙ je uvodφ jednφm rovnφtkem. Ka₧d² "osmibitov²" znak tak vlastn∞ nahradφ trojicφ sedmibitov²ch znak∙, nap°φklad naÜe "╚", kterΘ mß ve znakovΘ sad∞ ISO-8859-2 k≤d C8 (hexadecimßln∞), nahradφ trojicφ znak∙ "=C8" apod., a mezeru nahradφ podtr₧φtkem. Nap°φklad sl∙vko "╚lßnek" je pak v tomto k≤dovßnφ reprezentovßno °et∞zcem "=C8l=E1nek". P°i troÜe cviku (a malΘ Φetnosti diakritiky) je zak≤dovan² tvar pro Φlov∞ka stßle srozumiteln². P°i v∞tÜφ Φetnosti jin²ch ne₧ Φist²ch ASCII znak∙ vÜak roste neefektivnost tohoto zp∙sobu k≤dovßnφ.
![Obrßzek](/file/23708/PCWorld_1999-03_cd.bin/tutorial/archiv/a710s200/gifs/t710s204.gif) |
P°edstava k≤dovßnφ Base64
K≤dovßnφ Base64 generuje v₧dy stejn∞ dlouhΘ znakovΘ °et∞zce ze sedmibitov²ch znak∙, bez ohledu na to, jakß je Φetnost ne-ASCII znak∙ v p∙vodnφm textu. Pro nßzornost si lze p°edstavit, ₧e v tomto k≤dovßnφ se vezmou binßrnφ hodnoty vÜech znak∙, se°adφ se za sebou do jednoho souvislΘho bitovΘho °et∞zce, a nßsledn∞ se z n∞j "vykrojφ" Üestice po sob∞ jdoucφch bit∙. Tyto Üestice lze chßpat takΘ jako Φφsla od 0 do 63, a pou₧ijφ se jako indexy do pevn∞ danΘ k≤dovacφ tabulky. V tΘ se nachßzφ znaky (samoz°ejm∞ ΦistΘ ASCII znaky), kterΘ nahradφ p∙vodnφ Üestici bit∙ ve v²slednΘm k≤du, kter² je nßsledn∞ p°enßÜen. Celou p°edstavu ukazuje obrßzek. Pro srovnßnφ: zdrojov² °et∞zec "╚lßnek" je v k≤dovßnφ Base64 nahra₧en °et∞zcem "yGzhbmVrI", kter² snad dostateΦn∞ nßzorn∞ dokumentuje skuteΦnost, ₧e tento zp∙sob k≤dovßnφ je pro Φlov∞ka zcela nesrozumiteln².
|