UTF-32 ( Eng. Unicode Transformation Format ) eller UCS-4 (universal character set, eng. Universal Character Set ) i datalogi er en af måderne at kode Unicode - tegn på, ved at bruge præcis 32 bit til at kode et hvilket som helst tegn. De resterende kodninger, UTF-8 og UTF-16, bruger et variabelt antal bytes til at repræsentere tegn. Et UTF-32-tegn er en direkte repræsentation af dets kodeposition ( kodepunkt).
Den største fordel ved UTF-32 i forhold til kodninger med variabel længde er, at Unicode-tegn kan indekseres direkte. At opnå den n'te kodeposition er en operation, der tager samme tid. I modsætning hertil kræver koder med variabel længde sekventiel adgang til den n'te kodeposition. Dette gør det nemt at erstatte tegn i UTF-32-strenge ved at bruge et heltal som et indeks, som det normalt gøres for ASCII -strenge .
Den største ulempe ved UTF-32 er dens ineffektive brug af plads, da fire bytes bruges til at gemme et tegn. Tegn, der ligger uden for nulplanet (basis) af koderummet, bruges sjældent i de fleste tekster. Derfor er en fordobling, sammenlignet med UTF-16, pladsen optaget af strenge i UTF-32 ikke berettiget.
Selvom det er praktisk at bruge et fast antal bytes pr. tegn, er det ikke så godt, som det lyder. String trunkering er lettere at implementere end UTF-8 og UTF-16. Men det gør det ikke hurtigere at finde en specifik offset i en streng, da forskydningen også kan beregnes for kodninger med fast størrelse. Dette gør det ikke let at beregne den viste linjebredde, undtagen i et begrænset antal tilfælde, da selv et "fast-width"-tegn kan opnås ved at kombinere et almindeligt tegn med en modifikator, der ikke har nogen bredde. For eksempel kan bogstavet "y" udledes af bogstavet "i" og " hook over bogstavet " diakritisk . Kombinationen af sådanne tegn betyder, at teksteditorer ikke kan behandle 32-bit kode som en redigeringsenhed. Redaktører, der er begrænset til at arbejde med venstre-til-højre og prækomponerede tegnsprog, kan bruge tegn i fast størrelse . Men det er usandsynligt, at sådanne editorer understøtter tegn uden for nulplanet (basisplanet) af koderummet og fungerer næppe lige så godt med UTF-16-tegn.
ISO 10646 - standarden definerer en 31-bit kodningsform kaldet UCS-4, hvor hvert kodet tegn er repræsenteret af en 32-bit kodeværdi i koderummet for tal fra 0 til 7FFFFFFF.
Da der faktisk kun bruges 17 fly, har koderne for alle tegn værdier fra 0 til 0x10FFFF. UTF-32 er en delmængde af UCS-4, der kun bruger dette område. Da JTC1/SC2/WG2-dokumentet angiver, at alle fremtidige tegntildelinger vil være begrænset til nulplanet (basis) af koderummet eller de første 14 ekstra planer, vil UTF-32 være i stand til at repræsentere alle Unicode-tegn. Derfor er UCS-4 og UTF-32 identiske på nuværende tidspunkt, bortset fra at UTF-32-standarden har yderligere Unicode-semantik.
UTF-32 bruges ikke primært i tegnstrenge, men i interne API'er , hvor dataene er et enkelt kodepunkt eller glyph . Når du for eksempel tegner tekst, opbygger det sidste trin en liste over strukturer, som hver omfatter x- og y-positioner, attributter og et enkelt UTF-32-tegn, der identificerer den glyf, der skal tegnes. Ofte gemmer de "ubrugte" 11 bit af hvert 32-bit tegn uvedkommende information.
UTF-32 bruges til at gemme strenge på Unix , når wchar_t -typen er defineret som 32-bit. Python - programmer til og med 3.2 kan være blevet kompileret til at bruge UTF-32 i stedet for UTF-16. Fra version 3.3 er understøttelse af UTF-16 blevet fjernet, og strenge er gemt i UTF-32, men indledende nuller er optimeret, hvis de ikke bruges. På Windows , hvor wchar_t-typen er 16 bit, bruges UTF-32-strenge næsten aldrig.
HTML5 - standarden siger, at "Forfattere bør ikke bruge UTF-32, fordi de kodningsalgoritmer, der er beskrevet i denne specifikation, ikke adskiller den fra UTF-16."
Tegnkodninger | |
---|---|
Historiske indkodninger | yderligere komp. semafor (Makarov) morse Bodo MTK-2 komp. 6-bit SCP RADIX-50 EBCDIC KOI-7 ISO 646 |
moderne 8-bit repræsentation | symboler ASCII ikke-ASCII 8-bit kodesider Kyrillisk KOI-8 Grundlæggende kodning Mackyrillisk ISO 8859 1 (lat.) 2 3 fire 5 (kir.) 6 7 otte 9 ti elleve 12 13 fjorten 15 (€) 16 Windows 1250 1251 (Kir.) 1252 1253 1254 1255 1256 1257 1258 WGL4 IBM og DOS 437 850 852 855 866 "alternativ" MIC |
Multibyte | traditionel DBCS GB2312 HTML unicode UTF-32 UTF-16 UTF-8 tegnliste Kyrillisk |
brugergrænseflade tastatur layout lokalitet linje oversættelse skrifttype translitteration brugerdefinerede skrifttyper forsyningsselskaber ikonv optage |