UTF-16UTF-16 (anglicky 16-bit Unicode Transformation Format) je způsob kódování znaků ISO 10646/Unicode používající proměnnou délku kódu: pro kódování jednoho znaku se používají jedna nebo dvě 16bitové hodnoty. UTF-16 je rozšířením kódování staršího UCS-2; pro znaky v BMP (znaky v rozmezí U+0000–U+FFFF) se UTF-16 shoduje s UCS-2, tj. kóduje znaky přímo jako 16bitová čísla bez znaménka. Zatímco UCS-2 ostatní znaky (ty s kódy většími než 0xFFFF) kódovat neumožňuje vůbec, UTF-16 je kóduje pomocí dvojice šestnáctibitových hodnot (anglicky označované jako surrogate pair) z intervalu 0xD800 až 0xDFFF. Princip funkceZnaky do U+FFFF jsou kódovány přímo jednou šestnáctibitovou hodnotou, znaky s vyššími kódy jsou reprezentovány pomocí dvou šestnáctibitových čísel tak, že první číslo je v rozmezí 0xD800–0xDBFF a druhé číslo je v rozmezí 0xDC00–0xDFFF. Jelikož v rozmezí U+D800 až U+DFFF nedefinuje Unicode žádné platné znaky (tento rozsah je vyhrazen právě pro kódování surrogate pairs), je takové kódování jednoznačné. 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; ve druhém případě se od kódu znaku nejdříve odečte 0x010000):
Jelikož UTF-16 kóduje znaky do šestnáctibitových hodnot, je pro další zpracování zpravidla potřeba tyto šestnáctibitové hodnoty ještě převést do posloupnosti bajtů. Konkrétní způsob však závisí na používaném pořadí bajtů. Pro jednoznačnost se tedy někdy používají označení pro specifické schéma kódování: UTF-16LE (little-endian) a UTF-16BE (big-endian). Pokud se uvádí jen UTF-16, může na počátku být vložen BOM, kódování znaku U+FEFF, podle kterého příjemce rozpozná použité pořadí bajtů. Pokud není použité pořadí bajtů určeno explicitně, ani se nepoužije BOM, není kódování jednoznačné, zpravidla se chápe podle kontextu (typicky podle architektury příslušného počítače). PříkladText „x∈𝕄“ je kódován takto:
Výsledkem tedy je posloupnost šestnáctibitových hodnot KódováníDle RFC 2781 se kódují znaky definované normou ISO 10646 následovně:
DekódováníPři dekódování jsou vstupní data čtena po 16 bitech a je prováděno následující rozhodování:
VyužitíUTF-16 se používá pro text v API v systémech Microsoft Windows 2000/XP/2003/Vista/7/8/CE.[1] Starší systémy Windows NT (před Windows 2000) podporují pouze UCS-2.[2] Ve Windows XP nejsou pro evropské jazyky žádné znaky s kódy přes U+FFFF.[3][4] Obsah souborů a dat přenášených sítěmi bývá často směs kódování UTF-16, UTF-8 a starších kódových stránek. iSeries systémy firmy IBM používají kódovou stránku CCSID 13488 pro kódování UCS-2, CCSID 1200 pro kódování UTF-16 a CCSID 1208 pro kódování UTF-8.[5] UTF-16 používá operační systém Qualcomm BREW, prostředí platformy .NET i multiplatformní knihovna pro vytváření GUI Qt. Symbian OS použitý v telefonech Nokia S60 a Sony Ericsson UIQ používá UCS-2. Telefony iPhone používají pro SMS UTF-16 místo kódování UCS-2 popisovaného ve standardech 3GPP TS 23.038 a IS-637.[6] Systém souborů Joliet používaný pro dlouhá jména souborů na CD-ROM používá ve jménech souborů kódování UCS-2BE (max. délky 64 znaků). OdkazyReferenceV tomto článku byl použit překlad textu z článku UTF-16 na anglické Wikipedii.
Související článkyExterní odkazy
|