UTF-16
Z Wikipedie, otevřené encyklopedie
UTF-16 je způsob kódování znaků Unicode s proměnnou délkou znaku.
Obsah |
Způsob kódování znaků [editovat]
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]
Dle RFC 2781 se kódují znaky definované normou ISO 10646, které nabývají hodnot menších nebo rovno 0x10FFFF, následovně:
- Znaky s hodnotou menší než 0x010000 jsou zakódovány přímo jako 16bitové celé číslo.
- U ostatních znaků (0x010000 až 0x10FFFF) se od jejich hodnoty odečte 0x010000. Výsledkem je číslo z rozsahu 0x000000 až 0x0FFFFF, které lze zakódovat pomocí 20 bitů.
- 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]
Při dekódování jsou vstupní data čtena po 16 bitech a je prováděno následující rozhodování:
- Pokud je hodnota menší než 0xD800 nebo větší než 0xDFFF, jedná se o konečný výsledek.
- 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.
- 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]
Externí odkazy [editovat]
- RFC 2781, UTF-16, an encoding of ISO 10646: http://www.ietf.org/…