ASCII og Unicode: hva er det og hva brukes det til?

En datamaskin forstår bare tall, så hver bokstav du ser på skjermen er en kode. ASCII var den første kodetabellen som ble en standard, og Unicode er den vi bruker i dag for å skrive på alle språk. Her ser du hvordan de fungerer, hvilke koder det lønner seg å kunne, hvorfor det av og til dukker opp rare tegn i stedet for æ, ø og å, og hvordan du slår opp alt i tabellen.

Oppdatert:

Hva en tegnkoding er

En koding er en avtale: «tallet 65 betyr bokstaven A». Når du skriver en tekst, lagrer programmet disse tallene. Når en annen person åpner den, oversetter programmet deres tallene tilbake til bokstaver med den samme avtalen. Hvis de to ikke bruker samme tabell, blir teksten feil.

Du må skille mellom to ideer. Den ene er tegnsettet, listen over hvilke tall som svarer til hvilke symboler. Den andre er hvordan disse tallene lagres i byte. I ASCII faller de to sammen på en triviell måte. I Unicode gjør de ikke det, og der kommer UTF-8 inn.

ASCII: 128 tegn på 7 biter

ASCII (forkortelse for American Standard Code for Information Interchange) ble standardisert på 1960-tallet. Det bruker 7 biter, altså 2 opphøyd i 7 = 128 koder, fra 0 til 127. Av dem er 33 kontrolltegn (fra 0 til 31 og 127) og 95 er skrivbare (fra 32 til 126, mellomrom medregnet).

Det inneholder ikke æ, ø, å, bokstaver med aksent eller eurotegnet: det ble laget for engelsk. Det forklarer hvorfor det senere ble behov for andre tabeller.

Kodene du kommer til å støte på oftest. Mellomrommet (32) regnes som skrivbart selv om det ikke synes.
KontrolltegnDesimalHeksadesimalBinær (7 biter)Hva det brukes til
Null (NUL)0000000000Markerer slutten på en streng i flere språk
Horisontal tabulator (TAB)9090001001Hopper til neste tabulatorstopp
Linjeskift (LF)100A0001010Går ned til neste linje
Vognretur (CR)130D0001101Går tilbake til begynnelsen av linjen
Escape (ESC)271B0011011Starter kontrollsekvenser
Mellomrom32200100000Første skrivbare tegn
Slett (DEL)1277F1111111Sletter tegnet

Sammenhenger det lønner seg å huske

Tabellen er ikke ordnet tilfeldig. Med noen få regelmessigheter kan du lese koder utenat.

Linjeslutt: LF, CR og CRLF

Et linjeskift virker enkelt, men skrives ulikt etter system. Unix, Linux og macOS bruker ett enkelt tegn, LF (10). Windows bruker to etter hverandre, CR og LF (13 og 10), kjent som CRLF. De gamle fjernskriverne trengte to ulike kommandoer: å føre vognen tilbake til begynnelsen og å mate papiret én linje.

Den forskjellen er årsaken til filer som ser ut som én eneste linje i et enkelt redigeringsprogram, eller med et merkelig tegn på slutten av hver linje. Hvis du vil vite hvilken kode hver av dem har, skriver du LF eller CR i søkefeltet i ASCII-tabellen.

«Utvidet ASCII» er ikke en standard

Siden en byte har 8 biter og ASCII bare bruker 7, var det 128 ledige koder igjen (fra 128 til 255), og hver produsent og region fylte dem på sin måte. Det kalles «utvidet ASCII», men det finnes ikke én eneste tabell: det finnes mange, kalt kodesider. To av de mest kjente er Latin-1 (ISO-8859-1), der é er kode 233, og Windows-1252, som ligner, men har forskjeller i kodene 128 til 159 (der ligger for eksempel euro).

Problemet er at kode 233 betyr «é» i den ene tabellen og noe annet i en annen. En tekst skrevet med én tabell og lest med en annen viste rot. Unicode ble til for å få slutt på det rotet.

Unicode og UTF-8

Unicode gir et unikt tall, kalt kodepunkt, til hvert tegn i nesten alle verdens skriftsystemer, pluss symboler og emojier. I dag har det over 150 000 tegn. Det skrives med prefikset U+ og i heksadesimal: «A» er U+0041, «å» er U+00E5, euro er U+20AC og emojien med smilende ansikt er U+1F600. De første 128 kodepunktene er nøyaktig de samme som i ASCII.

UTF-8 er den mest brukte måten å lagre disse tallene i byte på, og bruker mellom 1 og 4 etter tegnet. De 128 ASCII-tegnene tar én enkelt byte, lik den den alltid har vært, så en ASCII-tekst er også en gyldig UTF-8-tekst. Resten tar flere byte.

Jo lenger unna ASCII, desto flere byte tar tegnet.
TegnKodepunktByte i UTF-8Byte (heksadesimal)
AU+0041141
éU+00E92C3 A9
åU+00E52C3 A5
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Hvorfor «Ã¥» dukker opp i stedet for «å»

Det er den vanligste feilen, og den har en nøyaktig forklaring. «å» i UTF-8 er to byte: C3 og A5. Hvis et program tror at teksten er i Latin-1, leser det hver byte som ett tegn: C3 er «Ã» og A5 er «¥». Resultat: «Ã¥». Det samme skjer med «ø», som vises som «Ã¸», og med «blåbær», som kommer opp som «blÃ¥bær».

Løsningen er nesten alltid å si til programmet at det skal åpne filen som UTF-8 (i et tekstredigeringsprogram eller i innstillingene for import i et regneark). Når det skjer motsatt vei, tekst i Latin-1 lest som UTF-8, dukker det ofte opp ruter med et spørsmålstegn, fordi disse enkeltbytene ikke danner gyldige UTF-8-sekvenser.

Slik bruker du ASCII-tabellen og omregneren

Verktøyet «ASCII-tabell» viser de 128 tegnene med koden i desimal, heksadesimal, oktal og binær, og navnet på kontrolltegnene.

  1. Skriv et tegn, en kode eller navnet på et kontrolltegn (for eksempel A, 65, 41 eller LF) i søkefeltet for å finne raden.
  2. Bruk filterknappene (Kontroll, Sifre, Store bokstaver, Små bokstaver, Tegn) for å se bare én gruppe.
  3. For å regne om skriver du en tekst i «Tekst» og velger formatet (desimal, heksadesimal, oktal eller binær): under vises kodene. «Hola» gir 72 111 108 97 i desimal og 48 6F 6C 61 i heksadesimal.
  4. Du kan også gjøre det motsatt: lim inn koder adskilt med mellomrom eller komma i «Koder», så bygges teksten. I heksadesimal godtas prefikser som 0x41.

Hvis teksten har tegn som ikke er ASCII, som å, sier verktøyet fra og viser Unicode-koden deres. For å se de virkelige bytene i UTF-8 bruker du «Tekst til binær»: å gir 11000011 10100101, to byte på 8 biter. Begrensningene: tabellen viser bare standard ASCII, ikke utvidet, og alt beregnes i nettleseren din uten at teksten sendes til noen server.

Vanlige spørsmål

Hvor mange tegn har ASCII?

128, med koder fra 0 til 127 og 7 biter hver. Av dem er 33 kontrolltegn og 95 er skrivbare, mellomrommet medregnet.

Hva er ASCII-koden til bokstaven A og a?

«A» er 65 (41 i heksadesimal, 01000001 i binær) og «a» er 97 (61 i heksadesimal, 01100001 i binær). De skiller seg alltid med 32.

Hva er forskjellen på ASCII og Unicode?

ASCII har 128 tegn laget for engelsk. Unicode har over 150 000, fra nesten alle språk og emojier, og de første 128 er de samme som i ASCII.

Hva er UTF-8?

Det er den mest brukte måten å lagre Unicode-tekst i byte på. Det bruker fra 1 til 4 byte per tegn: ASCII-tegn tar én, en å tar to og en emoji fire.

Hvorfor viser teksten min «Ã¥» eller «Ã©»?

Fordi en tekst som er lagret i UTF-8, blir lest som Latin-1. Åpne filen og angi UTF-8-koding, så er det løst.