ASCII og Unicode: hvad er det, og hvad bruges det til

En computer forstår kun tal, så hvert bogstav, du ser på skærmen, er en kode. ASCII var den første kodetabel, der blev standard, og Unicode er den, vi bruger i dag til at skrive på ethvert sprog. Her ser du, hvordan de virker, hvilke koder der er gode at kende, hvorfor der nogle gange dukker mærkelige tegn op i stedet for æ, ø og å, og hvordan du slår det hele op i tabellen.

Opdateret:

Hvad en tegnkodning er

En kodning er en aftale: «tallet 65 betyder bogstavet A». Når du skriver en tekst, gemmer programmet disse tal; når en anden åbner den, oversætter hendes eller hans program dem tilbage til bogstaver med den samme aftale. Hvis de to ikke bruger den samme tabel, bliver teksten forkert.

Man skal skelne mellem to ideer. Den ene er tegnsættet, listen over, hvilke tal der svarer til hvilke symboler. Den anden er, hvordan disse tal gemmes i bytes. I ASCII falder de to trivielt sammen; i Unicode gør de ikke, og der kommer UTF-8 ind.

ASCII: 128 tegn på 7 bit

ASCII (forkortelse for American Standard Code for Information Interchange) blev standardiseret i 1960'erne. Det bruger 7 bit, altså 2 i 7. potens = 128 koder, fra 0 til 127. Af dem er 33 kontroltegn (fra 0 til 31 og 127) og 95 kan udskrives (fra 32 til 126, mellemrum medregnet).

Det omfatter ikke bogstaver med accent, ikke æ, ø og å og ikke eurotegnet: det var designet til engelsk. Det forklarer, hvorfor der senere blev brug for andre tabeller.

De koder, du oftest vil støde på. Mellemrummet (32) tæller som udskrivbart, selv om man ikke ser det.
KontroltegnDecimalHexadecimalBinær (7 bit)Hvad det bruges til
Nul (NUL)0000000000Markerer slutningen på en streng i flere sprog
Vandret tabulator (TAB)9090001001Springer til næste tabulatorstop
Linjeskift (LF)100A0001010Går ned på næste linje
Vognretur (CR)130D0001101Går tilbage til begyndelsen af linjen
Escape (ESC)271B0011011Starter kontrolsekvenser
Mellemrum32200100000Første tegn, der kan udskrives
Slet (DEL)1277F1111111Sletter tegnet

Sammenhænge, det er godt at huske

Tabellen er ikke ordnet tilfældigt. Med nogle få regelmæssigheder kan du læse koder udenad.

Linjeskift: LF, CR og CRLF

Et linjeskift ser enkelt ud, men skrives forskelligt efter systemet. Unix, Linux og macOS bruger ét enkelt tegn, LF (10). Windows bruger to efter hinanden, CR og LF (13 og 10), kendt som CRLF. De gamle fjernskrivere havde brug for to forskellige kommandoer: at føre vognen tilbage til begyndelsen og at rykke papiret en linje frem.

Den forskel er årsagen til filer, der ser ud, som om alt står på én linje i en simpel editor, eller med et mærkeligt tegn i slutningen af hver linje. Hvis du vil vide, hvilken kode hver har, så skriv LF eller CR i søgefeltet i ASCII-tabellen.

«Udvidet ASCII» er ikke en standard

Da en byte har 8 bit, og ASCII kun bruger 7, var der 128 ledige koder (fra 128 til 255), og hver producent og region fyldte dem på sin egen måde. Det kaldes «udvidet ASCII», men der findes ikke én enkelt tabel: der er mange, kaldet kodesider. To af de mest kendte er Latin-1 (ISO-8859-1), hvor é er kode 233, og Windows-1252, der ligner, men har forskelle i koderne 128 til 159 (der ligger for eksempel euroen).

Problemet er, at kode 233 betyder «é» i den ene tabel og noget andet i en anden. En tekst skrevet med den ene tabel og læst med den anden viste volapyk. Unicode opstod for at gøre en ende på det rod.

Unicode og UTF-8

Unicode giver et unikt tal, kaldet kodepunkt, til hvert tegn i næsten alle verdens skriftsystemer samt symboler og emojis. I dag har det over 150.000 tegn. Det skrives med præfikset U+ og i hexadecimal: «A» er U+0041, «æ» er U+00E6, euroen er U+20AC, og emojien med et smilende ansigt er U+1F600. De første 128 kodepunkter er præcis ASCII's.

UTF-8 er den mest brugte måde at gemme disse tal i bytes, og den bruger mellem 1 og 4 alt efter tegnet. De 128 fra ASCII fylder en enkelt byte, identisk med den gamle, så en ASCII-tekst er også en gyldig UTF-8-tekst. Resten fylder flere bytes.

Jo længere fra ASCII, desto flere bytes fylder tegnet.
TegnKodepunktBytes i UTF-8Bytes (hexadecimal)
AU+0041141
éU+00E92C3 A9
æU+00E62C3 A6
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Hvorfor der står «Ã¦» i stedet for «æ»

Det er den mest almindelige fejl, og den har en præcis forklaring. Æ i UTF-8 er to bytes: C3 og A6. Hvis et program tror, at teksten er i Latin-1, læser det hver byte som ét tegn: C3 er «Ã» og A6 er «¦». Resultat: «Ã¦». Det samme sker med «ø», som ser ud som «Ã¸», med «å», som ser ud som «Ã¥», og med «København», der vises som «København».

Løsningen er næsten altid at fortælle programmet, at filen skal åbnes som UTF-8 (i et tekstprogram eller i indstillingerne for import i et regneark). Når det sker omvendt, tekst i Latin-1 læst som UTF-8, dukker der som regel rudetegn med et spørgsmålstegn op, fordi disse enkeltstående bytes ikke danner gyldige UTF-8-sekvenser.

Sådan bruger du ASCII-tabellen og omregneren

Værktøjet «ASCII-tabel» viser de 128 tegn med deres kode i decimal, hexadecimal, oktal og binær samt navnet på kontroltegnene.

  1. Skriv et tegn, en kode eller navnet på et kontroltegn i søgefeltet (for eksempel A, 65, 41 eller LF) for at finde dets række.
  2. Brug filterknapperne (Kontrol, Cifre, Store bogstaver, Små bogstaver, Tegn) for kun at se én gruppe.
  3. For at omregne skriver du en tekst i «Tekst» og vælger formatet (decimal, hexadecimal, oktal eller binær): nedenfor vises koderne. «Hola» giver 72 111 108 97 i decimal og 48 6F 6C 61 i hexadecimal.
  4. Du kan også gøre det omvendt: indsæt koder adskilt af mellemrum eller kommaer i «Koder», og teksten bygges. I hexadecimal accepteres præfikser som 0x41.

Hvis teksten har tegn, der ikke er ASCII, som æ, giver værktøjet besked og viser deres Unicode-kode. For at se de egentlige bytes i UTF-8 bruger du «Tekst til binær»: æ giver 11000011 10100110, to bytes på 8 bit. Grænserne: tabellen viser kun standard-ASCII, ikke den udvidede, og alt beregnes i din browser uden at sende teksten til nogen server.

Ofte stillede spørgsmål

Hvor mange tegn har ASCII?

128, med koder fra 0 til 127 og 7 bit hver. Af dem er 33 kontroltegn og 95 kan udskrives, mellemrum medregnet.

Hvad er ASCII-koden for bogstavet A og a?

«A» er 65 (41 i hexadecimal, 01000001 i binær) og «a» er 97 (61 i hexadecimal, 01100001 i binær). De adskiller sig altid med 32.

Hvad er forskellen på ASCII og Unicode?

ASCII har 128 tegn, der er lavet til engelsk. Unicode har over 150.000, fra næsten alle sprog og emojis, og dets første 128 er de samme som ASCII's.

Hvad er UTF-8?

Det er den mest brugte måde at gemme Unicode-tekst i bytes. Det bruger 1 til 4 bytes pr. tegn: ASCII-tegn fylder én, et æ fylder to og en emoji fire.

Hvorfor viser min tekst «Ã¦» eller «Ã©»?

Fordi en tekst gemt i UTF-8 bliver læst som Latin-1. Åbn filen og angiv kodningen UTF-8, så er det løst.