UTF-32

Från Wikipedia
(Omdirigerad från UTF-32LE)

UTF-32 är ett sätt att koda tecknen i Unicode, ett ”transformationsformat” (Unicode Transformation Format, UTF). UTF-32 beskriver helt enkelt att varje tecken i Unicode kodas med ett 32 bitar långt binärt tal motsvarande tecknets positionsnummer i Unicode-standarden. Att kodningen direkt motsvarar positionsnumret och att alla tecken är lika långa gör kodningen lätt att använda i datorprogram. Däremot tar den i de flesta fall mer utrymme än alternativen och används därför sällan i filer eller dataöverföring.

UTF-32 motsvarar[förtydliga] det sätt att representera tecknen i ISO-standarden ISO/IEC 10646 som där kallas UCS-4 (Universal Character Set, 4 oktetters representation). Benämningen UTF-32 används inte i ISO/IEC 10646.

Användning[redigera | redigera wikitext]

Som intern kodning i program är kodningen direkt baserad på 32-bitars tal. Kodningen refereras då till som en CEF, Character Encoding Format. Huruvida dessa tal är representerade som "big-endian" eller "little-endian", är då en helt intern sak på låg nivå. I programmen behandlar man dem som 32-bitars tal.

Som extern kodning (filer, dataöverföring av text) måste man dock, som det heter, serialisera 32-bitars-talen till en följd av 8-bitars-tal, då all datakommunikation idag är baserad på oktetter (8-bitars bytes). Kodningen refereras då till som en CES, Character Encoding Scheme. (Eventuell ytterligare serialisering, till till exempel 4 bitar eller en bit i taget, plus extra bitar för felkorrigering, m.m. sker på lägre nivå.) Denna serialisering till oktetter kan vara antingen big-endian (mest signifikanta oktetten först), även kallad "network byte order", eller little-endian (minst signifikanta oktetten först).

Som extern kodning, och registrerade av IANA, är det därför två kodningar: UTF-32BE (big-endian) och UTF-32LE (little-endian). Big-endian är att föredra, då detta är den konventionella "network byte order", och formellt sett den oktettordning som ISO/IEC 10646 föreskriver. Unicode tillåter dock även formellt båda serialiseringarna. UTF-32 (utan BE eller LE) är även den registrerad som en charset av IANA. Det är då big-endian, men om "filen" (motsv.) börjar med en byte-ordningsindikation (byte order mark, "BOM"), så är det BOM som avgör vilken byte-serialisering som resten av filen har. BOM ingår då inte i text-innehållet i filen, och skall tas bort vid deserialisering. (Om oktetterna kommer i annan ordning, till exempel 1-3-2-4 eller 2-1-4-3, så är det att betrakta som direkt fel.)

UTF-32(BE|LE) kan i princip användas för webbsidor och andra filer, både lokalt och publikt. För e-post kan UTF-32 användas om man kodar med Base64/Quoted printable. Det görs dock normalt inte av utrymmesskäl. UTF-32 betraktas allmänt som onödigt "slösaktigt" för lagring och överföring, speciellt för stora filer. Normalt används istället UTF-8 eller UTF-16 då Unicode används i webbsidor eller e-post. Däremot används UTF-32 allmänt för intern representation i olika program exempelvis i Unix, då den ger en direkt koppling mellan ett ord på fyra byte och ett unicode-tecken. Windows använder däremot UTF-16.