Každý, kdo píše často SMS, se naučil stručně a jasně formulovat své myšlenky. Musel se totiž smířit s tím, že pro jednu zprávu má k dispozici jen omezený počet sto šedesáti znaků. Proč se do SMS nevejde víc?
Stručně
Podle standardu GSM je pro text jedné SMS povoleno 140 osmic bitů, tedy celkem 1 120 bitů. Pro přenesení jednoho znaků je přitom obvykle potřeba osm bitů. Protože jsou ale jednotlivé znaky ze zjednodušené sady pro SMS vyjádřeny pouze sedmi bity, vejde se do celkového počtu 1 120 bitů celých 160 znaků (1120 : 7 = 160). |
Dříve než odhalíme tajemství sto šedesáti znaků SMS poněkud podrobněji, je třeba se podívat trochu blíže na formát zprávy tak, jak jej „chápou“ prvky systému GSM.
Jak se kóduje text SMS
Každá SMS obsahuje při posílání kromě zakódovaného vlastního textu zprávy ještě mnoho dalších přídavných informací, které jsou důležité pro správné doručení zprávy. Tyto informace ke zprávě doplňuje zařízení, které zprávu kóduje a odesílá. Přídavné informace jsou např. informace o čísle SMS centra a čísle odesilatele, specifikace protokolu, typ kódování, údaj o platnosti SMS, délka uživatelských dat apod.
Část zprávy, která obsahuje zakódovaný uživatelský text, může být podle standardu ETSI (European Telecommication Standard Institute) dlouhá maximálně 140 oktetů. Oktet je osmice nejčastěji binárních symbolů, tedy jedniček a nul. V klasickém způsobu kódování znaků, což je osm bitů na jeden textový znak, by se tedy do zprávy SMS vešlo jen 140 znaků.
Vývojáři standardu ale vymysleli užitečnou věc. Vybrali jen 128 znaků, které se v klasických textových zprávách vyskytují nejčastěji, a sestavili z nich tabulku. Tím mohli každý ze znaků zakódovat pouze sedmi bity namísto původních osmi. Jaké znaky jsou v tabulce vybrány se můžete podívat zde (anglicky). Na stejné stránce najdete i zajímavý konvertor na převod textové podoby SMS do šestnáctkové soustavy a naopak.
Do možných 1 120 bitů, které jsou určeny pro zakódování textu zprávy (140 oktetů × 8 bitů = 1120), se tak při sedmibitovém kódování vešlo 160 znaků, neboť 1120 : 7 = 160. A zde je zakopán pes. Jednotlivé skupiny bitů se ale pro odesílání sdružují po osmicích – jak ale úsporně zapustit do osmic sedmibitové znaky? Princip je na následujícím schématu.
Dejme tomu, že potřebujeme napsat znaky ABCD. Do prvního oktetu se zařadí všech sedm bitů znaku A. Tedy A0 až A6. Na poslední osmé místo, které je volné, zařadíme první ze sedmi bitů znaku B. Ve druhém oktetu začneme druhým bitem B a tím pádem nám ve druhém oktetu zůstanou dvě volná místa, na něž vložíme první dva znaky písmene C. Takto se znaky mezi oktety postupně přelévají, dokud nebudou do oktetů vysázeny všechny.
Pokud jsou již vyčerpány všechny znaky, které chceme zadávat, a poslední oktet není ještě zaplněn do posledního místa, volné bity se naplní nulami. Ty budou při zpětném kódování ignorovány. Tímto úsporným způsobem lze např. do čtrnácti oktetů zakódovat beze zbytku šestnáct znaků (14 × 8 = 16 × 7 = 112) atd.
Zkracování SMS
Ne všechny SMS zprávy používají kódování znaků do sedmi bitů, neboť tabulka se 128 znaky je omezená a nestačí vystihnout všechny potřebné symboly a informace. Některé informace je třeba zakódovat do osmi bitů a do zprávy se pak vejde pouze 140 znaků. Týká se to např. posílání vyzváněcích melodií, doručování loga na mobil nebo SMS pro konfiguraci mobilu pro wap (např. Nokia 7110). Do sto čtyřiceti znaků se musí rovněž vejít Rusové nebo jiné národy, které při psaní používají cyrilici.
V případě, že se v textu SMS zprávy objeví znaky s českou diakritikou, je potřeba použít kódování Unicode (UCS2). V něm jsou znaky zapisovány šestnáctibitově. V tomto případě ale může být SMS dlouhá pouhých sedmdesát znaků (1 120 : 16 = 70). Zde je tedy příčina tolikrát proklínaného zkracování SMS při použití českého slovníku T9 s diakritikou. Šestnácti bity se také kódují Flash SMS, což jsou zprávy, které se po příjmu automaticky zobrazí na displeji mobilního telefonu.
Stručně
Podle standardu GSM je pro text jedné SMS povoleno 140 osmic bitů, tedy celkem 1 120 bitů. Pro přenesení jednoho znaků je přitom obvykle potřeba osm bitů. Protože jsou ale jednotlivé znaky ze zjednodušené sady pro SMS vyjádřeny pouze sedmi bity, vejde se do celkového počtu 1 120 bitů celých 160 znaků (1120 : 7 = 160). |