Přeskočit na obsah

UTF-32

Z Wikipedie, otevřené encyklopedie

UTF-32(taktéž UCS-4) je protokol pro kódováníUnicode znaků.Tento protokol kóduje každý znak (kód nebo kódový bod sady Unicode) právě 32 bity (čtyřmi bajty). Tím vzniká přímá reprezentace znaku. Ostatní běžná kódování Unicode, používají pro zakódování jednoho znaku proměnný počet bitů.

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é. Kterýkoli znak (kód) v řetězci je dostupný ve stejném čase. Kódování s proměnlivou délkou znaku vyžadují pro nalezení n-tého znaku sekvenční přístup. Díky tomu lze s pomocí UTF-32 poměrně jednoduše použít algoritmy pracující s kódemASCII,a odvozenýmí národními 8bitovými kódy kde je také každý znak reprezentován konstantním počtem bitů (v daném případě osmi bity).

Hlavní nevýhodou UTF-32 je neefiktivita nakládání s pamětí, zakódování každého znaku spotřebuje 4 bajty. Vzhledem k tomu, že výskyt ne-ASCII znaků v českých textech je vzácný (asijské,africké,ruské znaky apod.), český text zapsaný v UTF-32 spotřebuje téměř dvakrát více paměti nežUTF-16a téměř čtyřikrát více paměti než při kódováníUTF-8.

Další nevýhodou je, že pořadí bajtů ve znaku při ukládání řetězců na paměťová média nebo při jejich přenosu je dané architekturou systému, což může vést k nekompatibilitě při zpracování textů v různých operačních systémech, procesorových architekturách, nebo v různých počítačových jazycích. Tuto slabinu sdílejí téměř všechna kódování sady unicode, s výjimkou UTF-8 aGB 18030.

UTF-32 je výhodnou volbou při zpracování textových řetězců, ale je nevhodný pro ukládání řetězců na paměťová média, nebo pro práci s rozsáhlými poli řetězců v operační paměti počítače.

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

Protože nyní norma připouští použití 17 oblastí z nichž každá obsahuje 216kódových bodů, povolené hodnoty kódových bodů jsou 0 až hexadecimálně 10FFFF. UTF-32 je proto podmnožinou UCS-4.

Kódování UTF-32 se často používá při interním zpracování řetězcůAPI.Různé systémy API a jazyky kvůli úspoře paměti nebo z historických důvodů používají i při interním zpracování řetězců odlišná kódování.

VUnixových operačníchsystémech se řetězci s kódováním UTF-32 občas setkáme kvůli tomu, že typ wchar_t (datový typ používaný pro ukládání znaků ve standardních knihovnách jazyka C) je zde implementován jako 32bitový. Knihovny operačních systémů rodinyMicrosoftWindowspoužívají 16bitový wchar_t, pracují tedy v kódování UTF-16.

Nižší verze programovacího jazykaPython(tj. do verze 3.2) mohou vnitřně pracovat s kódovánímUTF-16.Od verze 3.3 využívá Python pro zpracování řetězců výhradně kód UTF-32. Programovací jazyk Seed7 kóduje všechny znaky i řetězce pomocí UTF-32.

V tomto článku byl použitpřekladtextu z článkuUTF-32na anglické Wikipedii.