UTF-32: Porovnání verzí

Smazaný obsah Přidaný obsah
m narovnání přesměrování
Pteryx (diskuse | příspěvky)
Doplnění a oprava článku (některé věci nedávaly smysl)
Řádek 1:
'''UTF-32''' (taktéž UCS-4) je protokol pro kódování [[Unicode|Unicode znaků]]. Tento protokol kóduje každý znak přesně(kód nebo kódový bod sady Unicode) právě 32 bity (čtyřmi bajty). Tím vzniká přímá reprezentace znaku. NaOstatní rozdílběžná odkódování UTF-32Unicode, ostatní protokoly z rodiny Unicode používají proměnnou délku pro zakódování jednoho znaku proměnný počet bitů.
 
== Výhody a nevýhody ==
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řekladKterýkoli znakuznak (kód) v řetězci je trvádostupný vždyve konstantnístejném časčase. Kódování s proměnlivou délkou znaku vyžadují sekvenční přístup kpro nalezení n-tého kóduznaku sekvenční přístup. ADíky totomu dělálze s pomocí UTF-32 poměrně jednoduše nahraditelnýmpoužít algoritmy vpracující kódechs kódem [[ASCII]], kteréa používajíodvozenýmí celánárodními čísla8bitovými kkódy indexováníkde znaků,je jakotaké sekaždý napříkladznak dějereprezentován přikonstantním použitípočtem [[ASCII]]bitů (v daném případě osmi bity).
 
Hlavní nevýhodou UTF-32 je neefiktivita nakládání s prostorempamětí, neboťzakódování používákaždého znaku spotřebuje 4 bajty. proVzhledem každýk znak.tomu, Výskytže písmenvýskyt některýchne-ASCII znakovýchznaků sadv českých textech je vzácný ([[Asie|asijskáasijské]], [[Afrika|africkáafrické]], ruské znaky apod.) je tak vzácný, žečeský je potřeba dobře uvážit použití. Texttext zapsaný v UTF-32 zaberespotřebuje téměř dvakrát více prostorupaměti než [[UTF-16]] a 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 a [[GB 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.
 
== Historie ==
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ým32bitovým číslem. Toto číslo může nabývat hodnoty mezi 0 až [[Šestnáctková soustava|hexadeximálně]] 7FFFFFFF.
 
Protože se nyní používánorma pouzepřipouští použití 17 oblastí z nichž každá obsahuje 2<sup>16</sup> kódových bodů, všechnypovolené současnéhodnoty kódykódových jsoubodů mezijsou 0 až hexadecimálně 10FFFF. UTF-32 je proto podmnoužinou UCS-4 kvůli použití právě tohoto rozsahu.
 
== Použití ==
Kódování UTF-32 se významněčasto používá vpři interníchinterním zpracování řetězců [[Application Programming Interface|API]],. veRůzné kterýchsystémy jsouAPI dataa vjazyky jednoduchémkvůli kóduúspoře paměti nebo [[Piktogram|piktogramu]],z historických důvodů používají i při interním nezpracování vřetězců řetězcíchodlišná znakůkódování.
 
V [[Unix|Unixových operačních]] systé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ů rodiny [[Microsoft]] [[Microsoft Windows|Windows]] používají 16-bitový wchar_t, pracují tedy v kódování UTF-16.
 
VNižší [[Unix|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 vverze programovacímprogramovacího jazykujazyka [[Python]] (verze ažtj. do verze 3.2) mohlymohou býtvnitřně kompiloványpracovat vs kódováním [[UTF-16]]. Od verze 3.3 využívá UTF-16Python nenípro podporováno,zpracování řetězceřetězců jsouvýhradně nově vkód UTF-32 s nulovými byty zleva. Programovací jazyk Seed7 kóduje všechny znaky i řetězce pomocí UTF-32. Na [[Microsoft]] [[Microsoft Windows|Windows]] je však wchar_t 16-bitový.
 
{{překlad|en|UTF-32|561200188}}