UTF-8

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

UTF-8 je standardní kódování znaků, které se používá při zápisu textu v počítačích. Tento standard umožňuje zobrazování a ukládání znaků z různých jazyků, včetně češtiny. UTF-8 používá proměnnou délku kódování, což znamená, že každý znak může být reprezentován různým počtem bytů. Díky tomu je UTF-8 kompatibilní s ASCII, což je standardní kódování pro anglický jazyk, zatímco stále umožňuje zobrazování znaků z jiných jazyků. UTF-8 se stává stále více populárním v počítačových systémech a webových stránkách díky své schopnosti zobrazovat různé jazyky a znaky. Mnoho moderních operačních systémů a webových prohlížečů automaticky podporuje UTF-8, což umožňuje uživatelům zobrazovat a psát text v různých jazycích bez problémů. V České republice se také stále více používá UTF-8 při zápisu českého textu. Tento standard umožňuje přesný a spolehlivý přenos českých znaků, včetně diakritiky, pomocí počítačových sítí a různých komunikačních prostředků. Celkově lze říci, že UTF-8 je důležitým standardem pro práci s textem v různých jazycích, včetně češtiny, a přináší významné výhody v oblasti mezinárodní komunikace a zobrazování textu ve světě počítačů a internetu.

Podrobné schéma kódování UTF-8. Obsahuje číslování bitů a přesnou pozici každého bitu. Toto schéma neobsahuje žádné lokalizované značky (vhodné pro mezinárodní použití). UTF-8 (zkratka pro UCS/Unicode Transformation Format) je jedním ze způsobů kódování znaků, tedy přiřazení číselných kódů znakové sadě (písmenům abecedy a dalším znakům) pro potřeby počítačového zpracování textů. Představuje rozšířený mezinárodní standard dle norem Unicode/ISO/IEC 10646 a dominantní způsob kódování na internetovém webu, který umožňuje ukládat a zobrazovat texty s použitím široké palety světových písem.

Používá proměnnou délku znaku od 1 do 4 bajtů, zatímco standardy UTF-16 a UTF-32 mají pevnou délku 2 a 4 bajty (16 a 32 bitů). Byl navržen pro zpětnou kompatibilitu s ASCII, které obsahuje jen základní sadu anglické abecedy a se kterým má totožný způsob kódování 1bajtových (7bitových) znaků. +more UTF-8 je definováno v ISO 10646-1:2000 Annex D, v RFC 3629 a v Unicode 4.

...

Důvody vzniku, základní vlastnosti

Přirozené kódování znaků Unicode/UCS do 2 nebo 4 bajtů se nazývá UCS-2/UTF-16 a UCS-4/UTF-32. Pokud se nespecifikuje jinak, ukládá se nejprve nejvýznamnější bajt (tzv. +more konvence big-endian). S řetězci uloženými ve formátu UCS-2 nebo UCS-4 je spojeno několik problémů: * UCS-2 a UCS-4 nejsou zpětně kompatibilní s formátem ASCII * Nejednoznačnost interpretace kvůli neurčené endianitě * Uložení textu v latince je několikanásobně náročnější na paměť. * Některé bajty v řetězci mohou obsahovat binární nuly, které mají zvláštní význam v některých programovacích jazycích. * Některé bajty mohou obsahovat znaky, které mají zvláštní význam pro operační systém (např. „/“, „\“). Z uvedených důvodů nejsou formáty UCS-2 a UCS-4 vhodné pro ukládání do souborů.

Tyto problémy řeší kódování UTF-8, které má následující vlastnosti: * UCS znaky U+0000 až U+007F jsou kódovány jednoduše jako bajt 0x00 až 0x7F. To znamená, že řetězce obsahující pouze ASCII znaky mají shodné kódování v UTF-8 i v ASCII. +more * Všechny znaky větší než U+007F jsou kódovány jako sekvence několika bajtů, z nichž každý má nastaven nejvyšší bit na jedničku. To znamená, že bajty nemohou být zaměněny s žádným ASCII znakem. * První bajt sekvence, která reprezentuje ne-ASCII znak, je vždy v rozsahu 0xC0 až 0xFD a určuje, kolik bajtů následuje. Všechny následující znaky sekvence jsou v rozsahu 0x80 až 0xBF. To umožňuje snadnou synchronizaci a odolnost proti ztrátě některých bajtů. * Může být kódován celý rozsah UCS 231 znaků. * Zakódované znaky mohou být dlouhé až 4 bajty (v původní verzi až 6 bytů), ale základní 16bitové znaky BMP (basic multilingual plane) jsou jen 1 až 3 bajty dlouhé. * Pořadí big-endian (nejvýznamnější bajt ukládán jako první) je zachováno. * Bajty s hodnotou 0xFE a 0xFF nejsou nikdy použity.

Způsob kódování znaků

Každému z více než milionu znaků (písmových i řídicích) je přiřazeno číslo - tzv. kódový bod - a čím je toto číslo vyšší, tím je potřeba k jeho kódování více bajtů. +more V každém bajtu jsou nejvýznamnější bity příznakové a indikují, kolik bajtů je pro zapsání znaku použito, zatímco zbývajícími bity je zapsán vlastní kód znaku. Pro přepis kódu znaku se používá formát U+XXXX, kde XXXX je hexadecimální kód znaku, tedy každá číslice (X) šestnáctkové soustavy odpovídají čtyřem bitům (polovině bajtu).

Následující tabulka ukazuje způsob kódování. Pokud je nejvýznamnější bit bajtu 0 (hodnoty 0-127), jedná se o jednobajtový kód dle tabulky ASCII. +more V ostatních případech jsou rozhodující bity na začátku prvního bajtu: počet jedničkových bitů zakončených nulou (110-11110) odpovídá počtu bajtů sekvence (2-4), ostatní bajty začínají bity 10. Ostatní bity v sekvenci (označené xxx) slouží k vyjádření vlastního kódového bodu (kódu znaku). Počet n těchto bitů určuje (teoretický) počet 2n kódových bodů, tedy znaků, které lze touto sekvencí kódovat.

Počet bajtůBajt 1Bajt 2Bajt 3Bajt 4Bitů xKódových bodůPrvní kódový bodPoslední kódový bodKódované znaky
10xxxxxxx7128U+0000U+007FASCII - anglická abeceda a základní znaky
2110xxxxx10xxxxxx111920U+0080U+07FFVarianty latinky vč. české, další abecedy (řecká, cyrilice, hebrejská, arabská atd. +more)
31110xxxx10xxxxxx10xxxxxx1663 tisícU+0800U+FFFFOstatní znaky základní roviny Unicode vč. běžných východoasijských znaků
411110xxx10xxxxxx10xxxxxx10xxxxxx21přes milionU+10000U+10FFFFOstatní roviny Unicode: méně používané znaky, emoji
.

Podle původní definice byl jeden znak v UTF-8 reprezentován jedním až šesti bajty. V listopadu 2003 byl rozsah kódů ISO/IEC 10646 omezen na U+10FFFF kvůli shodnému omezení s UTF-16, RFC 3629 již popisuje UTF-8 s tímto omezením.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top