UTF-8

UTF-8
Derivační práce CESU-8 [d]
Tvůrce Rob Pike a Ken Thompson
Jazyk díla nebo názvu více jazyků [d]
datum otevření 2. září 1992 [1]
Oficiální stránka unicode.org/faq/utf_bom.…
Popsáno v odkazu ibm.com/docs/en/i… (  anglicky)

UTF-8 (z anglického  Unicode Transformation Format, 8-bit  – „Unicode Transformation Format, 8-bit“) je běžný standard kódování znaků , který umožňuje kompaktněji ukládat a přenášet znaky Unicode pomocí proměnného počtu bajtů (od 1 až 4) a je plně zpětně kompatibilní se 7bitovým kódováním ASCII . Standard UTF-8 je formalizován v RFC 3629 a ISO/IEC 10646 příloha D.

Kódování UTF-8 je nyní dominantní ve webovém prostoru. Široké uplatnění našel také v operačních systémech podobných UNIXu [2] .

Formát UTF-8 byl vyvinut 2. září 1992 Kenem Thompsonem a Robem Pikem a implementován v plánu 9 [3] . ID kódování Windows je 65001 [4] .

UTF-8 poskytuje ve srovnání s UTF-16 největší kompaktnost pro latinské texty , protože latinská písmena bez diakritiky , čísla a nejběžnější interpunkční znaménka jsou kódována v UTF-8 pouze jedním bajtem a kódy těchto znaků odpovídají jejich kódům v ASCII . [5] [6]

Kódovací algoritmus

Algoritmus kódování v UTF-8 je standardizován v RFC 3629 a skládá se ze 3 fází:

1. Určete počet oktetů ( bajtů ) potřebných pro zakódování znaku. Číslo znaku je převzato ze standardu Unicode.

Rozsah čísel znaků Požadovaný počet oktetů
00000000-0000007F jeden
00000080-000007FF 2
00000800-0000FFFF 3
00010000-0010FFFF čtyři

U znaků Unicode s čísly od U+0000do U+007F(zabírající jeden bajt s nulou v nejvýznamnějším bitu) kódování UTF-8 plně odpovídá 7bitovému kódování US-ASCII.

2. Nastavte vysoké bity prvního oktetu v souladu s požadovaným počtem oktetů určeným v prvním kroku:

Pokud je pro kódování vyžadováno více než jeden oktet, pak v oktetech 2-4 jsou dva nejvýznamnější bity vždy nastaveny na 10 2 (10xxxxxx). To usnadňuje rozlišení prvního oktetu v proudu, protože jeho vysoké bity nejsou nikdy 10 2 .

Počet oktetů Významné kousky Vzorek
jeden 7 0xxxxxxx
2 jedenáct 110xxxxx 10xxxxxx
3 16 1110xxxx 10xxxxxx 10xxxxxx
čtyři 21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

3. Nastavte významné bity oktetů tak, aby odpovídaly číslu znaku Unicode vyjádřenému v binární podobě. Začněte odsazovat od nízkých bitů čísla znaku, vkládejte je do nízkých bitů posledního oktetu, pokračujte zprava doleva k prvnímu oktetu. Volné bity prvního oktetu, které zůstanou nevyužity, jsou vyplněny nulami.

Příklady kódování

Symbol Binární znakový kód UTF-8 v binárním formátu UTF-8 v hex
$ U+0024 0100100 00100100 24
¢ U+00A2 10100010 11000010 10100010 C2 A2
U+20AC 100000 10101100 11100010 10000010 10101100 E2 82 AC
🐍 U+10348 1 00000011 01001000 11110000 10010000 10001101 10001000 F0 90 8D 88

Značka UTF-8

K označení, že soubor nebo proud obsahuje znaky Unicode, lze na začátek souboru nebo proudu vložit značku pořadí bajtů ( BOM ) , která , když je kódována v UTF-8, má podobu tří bajtů: .  EF BB BF16

1. bajt 2. bajt 3. bajt
binární kód 1110 1111 1011 1011 1011 1111
Hexadecimální kód EF BB BF

Pátý a šestý bajt

Zpočátku kódování UTF-8 umožňovalo zakódovat jeden znak až šesti bajty, ale v listopadu 2003 RFC 3629 zakázalo použití pátého a šestého bajtu a rozsah kódovaných znaků byl omezen na znak U+10FFFF. To bylo provedeno pro zajištění kompatibility s UTF-16.

Možné chyby dekódování

Ne každá sekvence bajtů je platná. Dekodér UTF-8 musí těmto chybám rozumět a adekvátně je řešit:

Poznámky

  1. https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
  2. Statistiky používání kódování znaků pro webové stránky, červen  2011
  3. Archivovaná kopie (odkaz není dostupný) . Získáno 27. února 2007. Archivováno z originálu 1. března 2011.    (Angličtina)
  4. Identifikátory kódových stránek – aplikace pro Windows | Dokumenty společnosti Microsoft . Získáno 14. července 2018. Archivováno z originálu 16. června 2019.
  5. Tak jsem zpět. Teorie strun . Robert O'Callahan (1. března 2008). Získáno 1. března 2008. Archivováno z originálu dne 23. srpna 2011.  
  6. Rostislav Čebykin. Všechna kódování kódování. UTF-8: moderní, kompetentní, pohodlné. . HTML a CSS . Získáno 22. března 2009. Archivováno z originálu dne 23. srpna 2011.

Odkazy