Nahlédněte i do Diskuse pod čarou!
A slovo se šířilo. Ze své vlasti Ameriky do ostatních částí světa. Oblastí, kde písmem není latinka, oblastí, kde se písmena používají společně s diakritickými znaménky, aby formovaly nová písmena. Sedmibitový svět (kde každé písmeno je v počítači reprezentováno číslem 0-127) ztrácel dech.
I přišel ke slovu (do té doby opomíjený) osmý bit z jednoho Byte. Původně zbytečný a používaný ke kontrole přenášených dat pomocí parity, nyní rozšířil znakovou sadu o 128 nových pozic.
Tato čísla byla použita k označení znaků národních abeced, ale také k označení jiných grafických symbolům jako je znak měny nebo rámečky. Brzy bylo jasné, že vzhledem k rozmanitosti různých jazyků a rozmanitosti jednotlivých používaných písmen ani 256 znaků nestačí pro písmena všech abeced. Nejjednodušší a v té době postačující řešení bylo tedy používat pro každý konkrétní jazyk jeho vlastní kódování znaků, tak, že veškeré použité písmena jazyka se vejdou do sady o velikosti 256 znaků.
Bohužel tento systém má několik základních nedostatků. Je sice možné předávat si jednoduše dokumenty v prostředí, které používá stejnou znakovou sadu, ale text napsaný původně v češtině se zobrazuje špatně třeba ve francouzštině - číslo, označující v češtině třeba "š" může ve francouzštině označovat třeba "1".
Navíc snad každá firma, která má jakýsi vliv na IT, pokládá za povinnost vyvinout a prosazovat vlastní kódování znaků - například v našem malém Česku se více či méně používá 6 (!) různých kódování češtiny - tj. šest různých počítačových reprezentací reálných českých písmen. Kromě ryze českých Kameníků a našimi bývalými (zaplaťpánbu, že bývalými) bratry v socialismu prosazovaným KOI-8 to je Microsoft (windows-1250), IBM (CP852) i Apple(x-mac-ce). Přitom existuje platný mezinárodní standard - ISO-8859-2. Tuto naprostou bezohlednost počítačových firem zaplatí samozřejmě pouze uživatelé. Jediná cesta z této svízelné situace je cílené prosazování mezinárodních standardů, nezávislých na počítačových firmách. I v Česku se situace (snad i díky Inetu) pomalu konsoliduje. Jasná je podpora ISO-8859-2, tomuto kódování musí rozumět jakýkoli e-mejlový nebo WWW klient, který si dělá nárok na to, aby byl kompatibilní s MIME (viz důvody pro používání ISO-8859-2). Díky monopolnímu postavení Microsoftu na poli operačních systémů se bohužel asi ještě dlouho nezbavíme windows-1250. Ostatní kódování pomalu vymírají, tak jak se systémy pomalu nahrazují rychlejším, stabilnějším a výkonnějším Un*xem, popřípadě na běžného uživatele zaměřenými MS Windows.
To, že je mnohdy těžké shodnout se na jednom kódování jediného jazyka dává tušit, jaké jsou problémy s vyměnou dokumentů v různých jazycích. Každý jazyk má svou znakovou sadu, nejlépe ještě v několika variantách a dokument napsaný v jiném jazyce se s nejvyšší pravděpodobností zobrazí prostě špatně. Stále se zvyšující potřeba výměny dokumentů elekronickou cestou zákonitě vede k potřebě nějaké globální abecedy, která by umožnila bezproblémovou výměnu dokumentů. Vzhledem k tomu, že přechod na angličtinu (a tím i zbavení se problému národních abeced) v dohledné době nehrozí, bylo třeba najít řešení jiné.
Consorcium se snaží spojit síly nejdůležitějších průmyslových společností a vývojářů ke standardizaci mezinárodní znakové sady. Výsledkem jeho práce je standard Unicode, který je základem internacionalizace a lokalizace software, který se stal také součástí širšího standardu ISO/EIC 10646;1993.
Primární úlohou Consorcia je vyvíjet a podporovat standard Unicode; pomáhat při jeho implementaci do software; a také zajišťovat fundovanou kontrolu nad budoucími revizemi standardu.
Standard Unicode definuje numerickou hodnotu a název pro každý ze svých znaků; v tomto ohledu je podobné jiným systémům pro kódovávání znaků, počínaje ASCII a konče mezinárodním standardem ISO/EIC 10646-1:1993.
Standard Unicode obsahuje, mimo přiřazení kódů a názvů jednotlivým znakům, i další informace, které obvykle ve znakových sadách chybí, ale jsou nezbytné pro implementaci kódování. Standard definuje vlastnosti znaků a obsahuje také další aplikační data, jako jsou převodní tabulky mezi malými/velkými písmeny a mapování Unicode do mnoha mezinárodních, národních a průmyslových znakových sad. Tyto informace jsou šířeny přímo Unicode Consorciem proto, aby byla zajištěna konzistence při výměně dat v Unicode.
V roce 1988, kdy projekt Unicode začal, byli neexistencí konzistentní mezinárodní znakové sady nejvíce zasaženi vydavatelé vědeckého a informačního software, vydavatelé novin a knih, knihovnické informační službt a akademičtí vývojáři. Od té doby stále sílila potřeba budovat software tak, aby byl snadno přizpůsobitelný lokálním jazykovým podmínkám. Stále roste také potřeba volné výměny dokumentů, bez závislosti na zdrojovém nebo cílovém prostředí. Explozivní růst Internetu dále podpořil požadavek znakové sady, která by byla stejná kdekoli na světě.
Vývojáři standardu Unicode přišli s myšlenkou jednotné metody identifikace znaků, která by byla efektivnější a snadněji přizpůsobitelná než předchozí kódovací systémy. Nový systém by měl být dostatečně kompletní, aby zajistil potřebu vícejazyčné práce s počítačem a měl by kódovat širokou paletu znaků pro profesionální zpracování textů v jakémkoli moderním jazyce.
Původní cíle standardu Unicode byly tyto:
Standard Unicode zahrnuje znaky všech hlavních mezinárodních standardů schválené a publikované před 31.prosincem 1990; především rodiny standardů ISO International Register of Character Sets, ISO/EIC 6937 a ISO/IEC 8859, také ISO/IEC 8879 (SGML). Jiné primární zdroje zahrnují bibliografické standardy používané v knihovnách (například ISO/EIC 5426 a ANSI Z39.64), nejdůležitější národní standardy a různé často používané průmyslové standardy (včetně znakových sad od Adobe, Apple, Fujitsu, Hewlett-Packard, IBM, Lotus, Microsoft, NEC, WordPerfect a Xerox). Ve verzi 2.0 byl přidán obsah Hangul z korejského národního standardu KS C 5601.
Unicode není určen pro kódování různých nesmyslných, osobních, románových a málokdy používaných znaků nebo znaků pro osobní potřebu, ani log nebo grafiky. Umělé znaky, použité pouze pro přechodné vkládání textu, jsou vynechány. Obrázky bez návaznosti k textu, jako jsou například hudební nebo taneční značky, nezasahují do oblasti zájmu Unicode. Různé odlišnosti v zobrazení znaků nejsou zachyceny. V rámci Unicode je vyhraženo 6400 znaků pro potřeby aplikací; použití těchto kódů aplikacemi není nijak omezeno.
Standard Unicode je stále ve vývoji. Nové znaky budou postupně přidávány, mohou se měnit názvy znaků, které jsou částí Unicode; jejich konrétní kódy však zůstávají stejné i v dalších verzích standardu.
Nelze jednoduše zjistit, jestli daný text je v Unicode nebo ne, nelze proto jednoduše zároveň používat Unicode a nějaké osmibitové kódování. Není tedy možné přejít na Unicode částečně, je nutný globální přechod, aby aplikace nejen dostaly text v Unicode, ale aby hlavně Unicode text i očekávaly. Fakt, že to jde v rámci uzavřeného systému, předvádí názorně firma Sun s Javou, pracující interně v Unicode, a také produkty firmy Microsoft. Podporu Unicode však nelze zajistit obecně a nelze počítat s tím, že mu druhá strana bude vždy rozumět - nasazení v poště nebo na WWW je tedy přinejmenším problematické. Alespoň v tomto bodě se však situace pomalu mění k lepšímu.
V mnoha jazycích (i v češtině) netvoří "speciální" znaky (např. znaky s diakritikou) ani zdaleka většinu písmen. Pro velké kvanta textu postačuje ASCII, sem tam proložené akcentovaným znakem. Pro takové texty je naprosto zbytečné použít dva byte na uložení každého písmene - jeden byte plně dostačuje. Ne každé médium také podporuje binární přenos a ne vždy vyhovuje zápis Unicode znaku jako dva po sobě následující byty. Postupem času vzniklo několik různých jiných zápisů Unicode, které řeší některé problémy s přenosem nebo používáním Unicode.
UTF-7 je forma, která používá pro zápis Unicode znaků pouze ASCII hodnoty a je navržena tak, aby zakódovaná data byla co nejlépe čitelná člověkem; všechna podporovaná ASCII písmena nejsou tedy nijak kódováná a reprezentují přímo sebe. Je také akceptován fakt, že některé systémy (například systémy používající EBCDIC) nedokáží zpracovat dokonce ani celé ASCII, takže Unicode znaky jsou zapsány tak, aby výsledek byl čitelný na jakémkoli systému. Pro zápis znaků se používá algoritmus velmi podobný base64, podrobný popis je však mimo záběr tohoto článku, dá se nalézt například jinde.
Pro ukázku si můžete pomocí tohoto skriptu nechat převést jeden kód UTF-8 na binárni i grafické vyjádření. (To druhé jen v případě, že váš prohlížeč UTF-8 dovede.)
Pro prosazení ISO/IEC 10646 (Unicode) jako mezinárodního standardu a jeho rozšíření bylo třeba pro softwarové systémy, historicky založené na ASCII, nalézt způsob, jak na nich používat to velké množství znaků, které byly pojmuty novým standardem.
S UCS souvisí několik problémů, spojených s historií operačních systémů a prostředím jazyka C. Největším problémem je vícebytové kódovací schéma, použité v UCS. Opravdu opbtížné je skloubit standard UCS s existujícími programovacími jazyky a existujícími operačními systémy a programy. Je naprosto nezbytné, aby se existující software nemusel příliš upravovat a přitom bylo možno použít velké množství znaků definované v UCS.
Cíle UTF-8 jsou zejména:
UTF-8 zvládá zápis UCS hodnot v rozmezí 0-0x7ffffff za použití 1-6 bytů. Úvodní byte vždy prozrazuje počet použitých bytů a následující členy vícebytové poslopnosti mají nastaven nejvyšší bit. je nastaven. Jakýkoli byte, který nezačíná na 10xxxxxx je začátek zápisu dalšího znaku.
bitů | hex min | hex max | zapsaná posloupnost bytů ve dvojkové soustavě |
---|---|---|---|
0-7 | 00000000 | 0000007f | 0vvvvvvv |
8-11 | 00000080 | 000007FF | 110vvvvv 10vvvvvv |
12-16 | 00000800 | 0000FFFF | 1110vvvv 10vvvvvv 10vvvvvv |
Velmi jednoduše se dá tento transformační formát zapamatovat tak, že v prvním bytu poslopnosti určuje počet bitů zleva po první nulu počet bytů, které následují.
Velmi sympatické je, že na obyčejný ASCII text je potřeba pouze jeden byte a kterýkoli znak Unicode lze zapsat maximálně jako tři znaky v UTF-8. Čeština má navíc to štěstí, že její akcentované znaky mají poměrně dost malé Unicode hodnoty, takže jakýkoli český Unicode znak lze v UTF-8 zapsat maximálně na dva byty.
S Unicode textem zapsaným v UTF-8 lze zacházet stejně jako s obyčejným osmibitovým, není třeba nic speciálně ošetřovat ani psát žádný speciální programovací kód pro zacházení s Unicode (snad kromě kódy, starající se o zobrazování znaků). Není divy, že se UTF-8 prosazuje jako univerzální formát pro výměnu dokumentů v Unicode. Formát UTF-8 odstraňuje všechny nevýhody nasazení Unicode - zachovává kompatibilitu se stávajícím kódem a přitom umožňuje aplikacím použít všech výhod univerzální mezinárodní znakové sady.