UTF-16

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

UTF-16 je způsob kódování znaků Unicode s proměnnou délkou znaku.

Způsob kódování znaků[editovat | editovat zdroj]

Následující tabulka ukazuje způsob kódování. Pozice bitů „xxx“ jsou vyplněny bity kódu znaku, vpravo jsou nejméně významné bity.

U+000000 – U+00FFFF xxxxxxxx xxxxxxxx
U+010000 – U+10FFFF 110110xx xxxxxxxx 110111xx xxxxxxxx

Kódování[editovat | editovat zdroj]

Dle RFC 2781 se kódují znaky definované normou ISO 10646, které nabývají hodnot menších nebo rovno 0x10FFFF, následovně:

  1. Znaky s hodnotou menší než 0x010000 jsou zakódovány přímo jako 16bitové celé číslo.
  2. U ostatních znaků (0x0100000x10FFFF) se od jejich hodnoty odečte 0x010000. Výsledkem je číslo z rozsahu 0x0000000x0FFFFF, které lze zakódovat pomocí 20 bitů.
  3. Horních 10 bitů předchozího výsledku vyplní spodní bity 16bitového čísla 0xD800 (původně v něm je spodních 11 bitů nulových, tedy volných), zatímco spodních 10 bitů výsledku se přičte k 16bitovému číslu 0xDC00 (spodních 10 bitů v něm je původně volných) a je zakódováno.

Dekódování[editovat | editovat zdroj]

Při dekódování jsou vstupní data čtena po 16 bitech a je prováděno následující rozhodování:

  1. Pokud je hodnota menší než 0xD800 nebo větší než 0xDFFF, jedná se o konečný výsledek.
  2. V opačném případě musí být hodnota v rozmezí 0xD800-0xDBFF a je třeba přečíst dalších 16 bitů, které musí ležet v rozsahu od 0xDC00 do 0xDFFF.
  3. Horních 10 bitů výsledku je utvořeno z dolních 10 bitů prvního čísla a dolních 10 bitů výsledku se vezme z druhého čísla, k výsledku se v tomto případě přičte ještě 0x010000 a jedná se o konečný výsledek.

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]