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]
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.
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 |
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 |
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.
Ne každá sekvence bajtů je platná. Dekodér UTF-8 musí těmto chybám rozumět a adekvátně je řešit:
Kódování znaků | |
---|---|
Historická kódování | doplňková komp. semafor (Makarov) morse Bodo MTK-2 komp. 6bitový SCP RADIX-50 EBCDIC KOI-7 ISO 646 |
moderní 8bitová reprezentace | symboly ASCII non-ASCII 8bitové kódové stránky cyrilice KOI-8 Základní kódování MacCyrillic ISO 8859 1 (lat.) 2 3 čtyři 5 (kir.) 6 7 osm 9 deset jedenáct 12 13 čtrnáct 15 (€) 16 Okna 1250 1251 (Kir.) 1252 1253 1254 1255 1256 1257 1258 WGL4 IBM a DOS 437 850 852 855 866 "alternativní" MIC |
Vícebajtové | tradiční DBCS GB2312 HTML unicode UTF-32 UTF-16 UTF-8 seznam postav cyrilice |
uživatelské rozhraní rozložení klávesnice národní prostředí překlad řádků písmo přepis vlastní písma utility iconv záznam |
Serializace digitálních datových formátů | |
---|---|
Text | |
Internet a telekomunikace |
|
Média | |
jiný |