Dataverktyg Online » Datavetenskap » Unicode teckenkoder | sv en |
Unicode är en internationell standard som beskriver hur alla världens tecken skall kunna hanteras med hjälp av datorer. Varje tecken har blivit tilldelat ett eget nummer, en så kallad kodpunkt, och brukar skrivas med U+ följt av tecknets nummer med minst 4 siffror i hexadecimal form. Tecknen A, Ö och ♥ har till exempel kodpunkterna U+0041, U+00D6 och U+2665 vilket motsvarar talen 65, 214 och 9829 i decimal form.
HTML är det språk som är vanligast att använda för att skapa webbsidor. Vissa tecken har en speciell betydelse i HTML och kan därför inte användas i text på vanligt vis. Många tecken är dessutom svåra att skriva med ett tangentbord och vissa tecken kan vara tekniskt omöjliga beroende på vilken teckenkodning som används. Som tur är finns det ett alternativt skrivsätt som gör det möjligt att använda alla Unicode-tecken bara man vet tecknets Unicode-nummer.
Numret skrivs helt enkelt i decimal form omgivet av &# och ; (semikolon). Om numret föregås av ett x betyder det istället att numret är skrivet i hexadecimal form. Några tecken (men långt ifrån alla) har dessutom ett namn som kan användas på liknande sätt. För att ge ett exempel så har tecknet < kodpunkt U+003C (decimalt: 60) och namnet lt (engelsk förkortning för less than) vilket innebär att tecknet kan skrivas på någon av följande sätt: < < <
UTF-8 är en populär teckenkodning som i likhet med övriga UTF-kodningar har stöd för alla Unicode-tecken. Tecknen kodas som en serie av 1-4 byte. De flesta västerländska tecken behöver bara en eller två byte. För siffrorna 0-9, bokstäverna A-Z och de vanligaste skiljetecknen räcker det med en byte, men för de svenska bokstäverna Å, Ä och Ö krävs det två byte.
Tecken i intervallet U+0000 – U+007F lagras på samma sätt som för teckenkodningen ASCII som är den teckenkodning som ligger till grund för de flesta andra teckenkodningar. Det innebär att det inte är någon skillnad mellan UTF-8 och ASCII för texter som bara innehåller dessa tecken.
Tecken som kräver fler än en byte inleds med en byte där de mest signifikanta bitarna är en serie av ettor, lika många som antalet byte, följt av en nolla. För resterande byte är de två mest signifikanta bitarna 10. Övriga bitar används för att koda Unicode-numret.
0 - 7F | 0xxxxxxx |
80 - 7FF | 110xxxxx 10xxxxxx |
800 - FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
10000 - 10FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
UTF-16 använder en eller två 16-bitarstal för att lagra ett tecken. Tecken i intervallet U+0000 – U+FFFF använder ett 16-bitarstal och alla bitar används för att koda Unicode-numret. Detta innefattar de flesta tecken som används i världens alla nutida språk.
Tecken i intervallet U+10000 – U+10FFFF använder två 16-bitarstal som inleds med bitmönstren 110110 och 110111. Övriga 20 bitar används för att beräkna Unicode-numret. Anledningen till att detta fungerar är att Unicode-nummer som innehåller dessa bitmönster inte kodar för några giltiga Unicode-tecken.
0 - FFFF | xxxxxxxxxxxxxxxx |
10000 - 10FFFF | 110110xxxxxxxxxx 110111xxxxxxxxxx |
UTF-32 använder en fast storlek på 32 bitar för att lagra varje tecken. Detta underlättar ofta texthanteringen i datorprogram jämfört med UTF-8 och UTF-16 som använder olika längder för olika tecken, men en nackdelen med UTF-32 är att det går åt mer utrymme att lagra de flesta tecken. UTF-32 används därför oftast internt i program men sällan för mer långsiktig lagring på t.ex. en hårddisk. Bara 21 bitar behövs för att representera alla Unicode-tecken vilket betyder att de 11 mest signifikanta bitarna alltid är nollor för alla tecken kodade i UTF-32.
0 - 10FFFF | 00000000000xxxxxxxxxxxxxxxxxxxxx |
Ibland kan tecken bestå av flera kodpunkter och ibland finns det flera olika sätt att koda samma tecken. Till exempel kan tecknet é antingen kodas som U+00E9 (é) eller som U+0065 (e) följt av U+0301 (+akut accent ). Vissa emojier är en kombination av andra emojier. Till exempel så består emojin 🐈⬛ av U+1F408 (🐈), U+200D och U+2B1B (⬛).