UTF-32

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

UTF-32 (taktéž UCS-4) je protokol pro kódování Unicode znaků. Tento protokol kóduje každý znak přesně 32 bity. Tím vzniká přímá reprezentace znaku. Na rozdíl od UTF-32, ostatní protokoly z rodiny Unicode používají proměnnou délku pro zakódování jednoho znaku.

Výhody a nevýhody[editovat | editovat zdroj]

Hlavní výhodou UTF-32 oproti kódováním s proměnnou délkou je to, že tyto Unicode kódy jsou přímo indexovatelné. Překlad znaku trvá vždy konstantní čas. Kódování s proměnlivou délkou znaku vyžadují sekvenční přístup k nalezení n-tého kódu. A to dělá UTF-32 jednoduše nahraditelným v kódech, které používají celá čísla k indexování znaků, jako se například děje při použití ASCII.

Hlavní nevýhodou UTF-32 je neefiktivita nakládání s prostorem, neboť používá 4 bajty pro každý znak. Výskyt písmen některých znakových sad (asijská, africká apod.) je tak vzácný, že je potřeba dobře uvážit použití. Text zapsaný v UTF-32 zabere až dvakrát více prostoru než UTF-16 a až čtyřikrát než UTF-8.

Historie[editovat | editovat zdroj]

Původní standard ISO 10646 definuje 31-bitové kódování nazývané UCS-4, v kterém je každý znak reprezentován 32-bitovým číslem. Toto číslo může nabývat hodnoty mezi 0 až hexadeximálně 7FFFFFFF.

Protože se nyní používá pouze 17 oblastí, všechny současné kódy jsou mezi 0 až hexadecimálně 10FFFF. UTF-32 je podmnoužinou UCS-4 kvůli použití právě tohoto rozsahu.

Použití[editovat | editovat zdroj]

Kódování UTF-32 se významně používá v interních API, ve kterých jsou data v jednoduchém kódu nebo piktogramu, ne v řetězcích znaků.

V Unixových operačních systémech jsou řetězce s kódováním UTF-32 občas používány jako úložiště kvůli tomu, že typ wchar_t je definován jako 32-bitový. Kódy v programovacím jazyku Python (verze až do 3.2) mohly být kompilovány v UTF-16. Od verze 3.3 už UTF-16 není podporováno, řetězce jsou nově v UTF-32 s nulovými byty zleva. Programovací jazyk Seed7 kóduje všechny znaky i řetězce pomocí UTF-32. Na Microsoft Windows je však wchar_t 16-bitový.

V tomto článku byl použit překlad textu z článku UTF-32 na anglické Wikipedii.