ASCII - American Standard Code for Information Interchange

  1. Home
  2. Handboek
  3. ASCII - American Standard Code

Iedereen die langer met informatietechnologie en internet werkt, kent de afkorting ASCII. Maar wat betekent het eigenlijk? De term verwijst naar een vaste tekencodering en omvat codes die horen bij zowel afdrukbare tekens, zoals letters, cijfers en leestekens, als bij niet-afdrukbare controletekens. De ASCII-code is een standaard voor de weergave van tekens door elektronische apparaten zoals pc’s en smartphones. Het is een belangrijk onderdeel van veel programmeertalen. Maar het is ook voor de gebruiker zinvol om te snappen hoe ASCII werkt. Om je een overzicht te geven, vind je in dit artikel een handige ASCII-codetabel waarin je elk karakter kunt opzoeken.


Definitie ASCII
De tekencodering is de Amerikaanse standaardcode voor informatie-uitwisseling en daarmee de Amerikaanse voorloper van ISO 646 (internationaal gedefinieerde tekensets). ASCII is een 7-bit code en daarom zijn 128 karakters (27) gedefinieerd. De codering bestaat uit 33 niet-afdrukbare en 95 afdrukbare tekens en omvat letters, leestekens, cijfers en besturingstekens (control characters).


Geschiedenis van de ASCII-code

De American Standards Association (ASA, nu bekend als ANSI voor ‘American National Standards Institute’) keurde al in 1963 de American Standard Code for Information Interchange (ASCII) goed. Daarbij heeft het bindende richtlijnen opgesteld voor de manier waarop elektronische apparaten tekens moeten weergeven. Omdat het een puur Amerikaanse standaard betreft, wordt ook vaak gesproken over US-ASC-II. Je kunt morsecode als de voorganger beschouwen, evenals codes die gebruikt worden voor telexen. Dit zijn immers ook gestandaardiseerde codes (bijvoorbeeld een vaste volgorde van geluidssignalen) die worden vertaald naar tekst. ASCII is geïntroduceerd omdat computers ons alfabet niet aankunnen. Hun interne processen zijn immers gebaseerd op het binaire systeem.

Sinds de introductie is ASCII een paar keer gewijzigd om de codering aan te passen aan nieuwe eisen. Er zijn bijvoorbeeld uitgebreide versies die een achtste bit gebruiken, waarmee ook karakters in andere talen worden ondersteund, zoals de Duitse umlauten (ä, ö en ü). Latin-1 (ISO 88591-1), dat nog steeds veel wordt gebruikt in Europa, is gebaseerd op de ASCII-code. Maar het wisselen tussen bijvoorbeeld het Latijnse alfabet en Arabische tekens is in deze versie niet mogelijk. Daarom zijn tegenwoordig vooral de op Unicode gebaseerde karaktersets in gebruik, zoals UTF-8. Unicode biedt ruimte voor meer dan een miljoen verschillende karakters. UTF-8 is trouwens nog steeds compatibel met ASCII. Het codeert de eerste 128 tekens namelijk net als ASCII.


Wat is ASCII?

ASCII is een standaard voor de weergave van tekens door elektronische apparaten. Om te begrijpen wat dat betekent, moet je goed weten hoe een computer werkt. In een computer zijn processen gebaseerd op het binaire systeem. De processen van een computer werken dus met een 1 en een 0. Daarom is ASCII ook op dit systeem gebaseerd. De originele ASCII-standaard definieert verschillende karakters binnen zeven bits: zeven cijfers die 0 of 1 zijn. De achtste bit, behorend tot een volledige byte, wordt traditioneel als controlebit gebruikt. Maar uitgebreide ASCII-versies gebruiken het achtste bit om de beschikbare karakters uit te breiden tot 256 (28).

Zo komt elk karakter overeen met een zevencijferige reeks van nullen en enen, die kunnen worden weergegeven als een decimaal getal of als een hexadecimaal getal. We kunnen de ASCII-tekens in verschillende groepen verdelen:

  • Besturingstekens (0-31 & 127): dit zijn niet-afdrukbare tekens. Ze worden gebruikt om opdrachten naar de pc of printer te sturen en zijn gebaseerd op telextechnieken. Deze tekens worden bijvoorbeeld gebruikt om regelafbrekingen of tabulatoren in te stellen. Veel van deze karakters zijn vandaag de dag nauwelijks meer in gebruik.
  • Speciale tekens (32-47 / 58-64 / 91-96 / 123-126): deze tekens omvatten alle afdrukbare tekens die geen letters of cijfers zijn. Denk aan leestekens en wiskundige tekens. In ASCII hoort ook de spatie hierbij, dat als een onzichtbaar maar afdrukbaar teken wordt beschouwd. Een spatie behoort niet tot de besturingstekens, zoals je misschien zou denken.
  • Cijfers (30-39): dit zijn de tien Arabische cijfers van nul tot negen.
  • Letters (65-90 / 97-122): de letters zijn verdeeld in twee groepen. De eerste groep bevat de hoofdletters, de tweede de kleine letters.

Feit!
Oorspronkelijk zou de achtste bit het mogelijk moeten maken om de gegevens te controleren op fouten. Met deze zogenaamde pariteitsbit kan de ontvanger inconsistenties detecteren. Maar deze bit maakt alleen duidelijk dát er een fout is opgetreden, niet welke fout. Pariteitscontrole is daarom nauwelijks geschikt voor het corrigeren van fouten.


ASCII tabel: overzicht van alle ASCII codes

ASCII-codetabellen geven meestal de waarden decimaal, binair en hexadecimaal weer. De eerste twee varianten worden gebruikt omdat deze nummersystemen door mensen respectievelijk machines worden gebruikt. Het hexadecimale systeem daarentegen heeft als voordeel dat het 16 tekens (0-9 + A-F) bevat en kan dus grote getallen met minder cijfers weergeven dan de andere twee varianten. Een byte heeft in de hexadecimale weergave bijvoorbeeld maximaal 2 cijfers.

BinHexDecASCII-tekenUitlegGroep
000000000NULHet nulteken geeft aan dat het apparaat niets moet doen. (Null)Besturingstekens
000000111SOHMarkeert het begin van een kopregel. (Start of Heading)Besturingstekens
000001022STXBeëindigt de kopregel en markeert het begin van een bericht. (Start of Text)Besturingstekens
000001133ETXMarkeert het einde van het bericht. (End of Text)Besturingstekens
000010044EOTMarkeert het einde van de volledige transmissie. (End of Transmission)Besturingstekens
000010155ENQEen verzoek dat een antwoord vereist. (Enquiry)Besturingstekens
000011066ACKGeeft een positief antwoord op een verzoek. (Acknowledge)Besturingstekens
000011177BELLaat een akoestisch signaal klinken. (Bell)Besturingstekens
000100088BSLaat de cursor een stap teruggaan. (Backspace)Besturingstekens
000100199TAB (HT)Een horizontale tabulator die de cursor binnen een regel naar de volgende vooraf gedefinieerde positie verplaatst. (Horizontal Tab)Besturingstekens
0001010A10LFVerplaatst de cursor naar de volgende regel. (Line Feed)Besturingstekens
0001011B11VTDe verticale tabulator laat de cursor naar een vooraf gedefinieerde regel springen. (Vertical Tab)Besturingstekens
0001100C12FFVoert een pagina-onderbreking door. (Form Feed)Besturingstekens
0001101D13CRZet de cursor terug naar de eerste positie van de lijn. (Carriage Return)Besturingstekens
0001110E14SOSchakelt over naar een speciale weergave. (Shift Out)Besturingstekens
0001111F15SISchakelt de weergave terug naar de normale toestand. (Shift In)Besturingstekens
00100001016DLEDe betekenis van de volgende tekens wordt gewijzigd. (Data Link Escape)Besturingstekens
00100011117DC1Besturingskarakters die voor specifieke functies worden gebruikt, afhankelijk van het apparaat. (Device Control)Besturingstekens
00100101218DC2 Besturingstekens
00100111319DC3 Besturingstekens
00101001420DC4 Besturingstekens
00101011521NAKNegatief antwoord op een verzoek. (Negative Acknowlegde)Besturingstekens
00101101622SYNSynchroniseert een gegevensoverdracht, ook als er geen signalen worden verzonden. (Synchronous Idle)Besturingstekens
00101111723ETBMarkeert het einde van een transmissieblok. (End of Transmission Block)Besturingstekens
00110001824CANMaakt duidelijk dat een transmissie fouten bevatte en dat de gegevens moeten worden verwijderd. (Cancel)Besturingstekens
00110011925EMGeeft het einde van het opslagmedium aan. (End of Medium)Besturingstekens
00110101A26SUBVervangt een fout teken. (Substitute)Besturingstekens
00110111B27ESCIntroduceert een escape-sequentie en kent dus een speciale betekenis toe aan de volgende tekens. (Escape)Besturingstekens
00111001C28FSMarkeert de scheiding van logische datablokken en is hiërarchisch geordend: File als grootste, Unit als kleinste eenheid. (File Separator, Group Separator. Record Separator, Unit Separator)Besturingstekens
00111011D29GS Besturingstekens
00111101E30RS Besturingstekens
00111111F31US Besturingstekens
01000002032SPSpatie (Space)Speciale tekens
01000012133!UitroeptekenSpeciale tekens
01000102234 Rechte aanhalingstekens bovenSpeciale tekens
01000112335#Dubbelkruis (hekje)Speciale tekens
01001002436$DollartekenSpeciale tekens
01001012537%ProcenttekenSpeciale tekens
01001102638&AmpersandSpeciale tekens
01001112739'ApostrofSpeciale tekens
01010002840(Linker haakjeSpeciale tekens
01010012941)Rechter haakjeSpeciale tekens
01010102A42*Ster (asterisk)Speciale tekens
01010112B43+PlustekenSpeciale tekens
01011002C44,KommaSpeciale tekens
01011012D45-KoppeltekenSpeciale tekens
01011102E46.Punt (einde zin)Speciale tekens
01011112F47/Schuine streep (slash)Speciale tekens
011000030480 Cijfers
011000131491 Cijfers
011001032502 Cijfers
011001133513 Cijfers
011010034524 Cijfers
011010135535 Cijfers
011011036546 Cijfers
011011137557 Cijfers
011100038568 Cijfers
011100139579 Cijfers
01110103A58:Dubbele puntSpeciale tekens
01110113B59;PuntkommaSpeciale tekens
01111003C60< Kleiner danSpeciale tekens
01111013D61=Is gelijk-tekenSpeciale tekens
01111103E62> Groter danSpeciale tekens
01111113F63?VraagtekenSpeciale tekens
10000004064@Apenstaartje (at-teken)Speciale tekens
10000014165A Hoofdletters
10000104266B Hoofdletters
10000114367C Hoofdletters
10001004468D Hoofdletters
10001014569E Hoofdletters
10001104670F Hoofdletters
10001114771G Hoofdletters
10010004872H Hoofdletters
10010014973I Hoofdletters
10010104A74J Hoofdletters
10010114B75K Hoofdletters
10011004C76L Hoofdletters
10011014D77M Hoofdletters
10011104E78N Hoofdletters
10011114F79O Hoofdletters
10100005080P Hoofdletters
10100015181Q Hoofdletters
10100105282R Hoofdletters
10100115383S Hoofdletters
10101005484T Hoofdletters
10101015585U Hoofdletters
10101105686V Hoofdletters
10101115787W Hoofdletters
10110005888X Hoofdletters
10110015989Y Hoofdletters
10110105A90Z Hoofdletters
10110115B91[Recht haakje linksSpeciale tekens
10111005C92\Omgekeerde schuine streep (backslash)Speciale tekens
10111015D93]Recht haakje rechtsSpeciale tekens
10111105E94^Accent circonflexeSpeciale tekens
10111115F95_UnderscoreSpeciale tekens
11000006096`Enkel aanhalingstekenSpeciale tekens
11000016197a Kleine letters
11000106298b Kleine letters
11000116399c Kleine letters
110010064100d Kleine letters
110010165101e Kleine letters
110011066102f Kleine letters
110011167103g Kleine letters
110100068104h Kleine letters
110100169105i Kleine letters
11010106A106j Kleine letters
11010116B107k Kleine letters
11011006C108l Kleine letters
11011016D109m Kleine letters
11011106E110n Kleine letters
11011116F111o Kleine letters
111000070112p Kleine letters
111000171113q Kleine letters
111001072114r Kleine letters
111001173115s Kleine letters
111010074116t Kleine letters
111010175117u Kleine letters
111011076118v Kleine letters
111011177119w Kleine letters
111100078120x Kleine letters
111100179121y Kleine letters
11110107A122z Kleine letters
11110117B123{Linker accoladeSpeciale tekens
11111007C124|Verticale streep (pipe, sluisteken)Speciale tekens
11111017D125}Rechter accoladeSpeciale tekens
11111107E126~TildeSpeciale tekens
11111117F127DELVerwijdert een teken. Omdat dit besturingsteken op alle posities uit hetzelfde cijfer bestaat, kon men in de tijd van ponskaarten een ander teken ongeldig maken, door alle posities uit te stansen. (Delete)

De achtste bit wordt van programma tot programma anders toegewezen. Als het niet wordt gebruikt, is dit bit 0. Als een uitgebreide ASCII-versie het gebruikt, is dit meestal om rekening te houden met karakters in andere talen. De eerste 128 tekens hebben altijd hun oorspronkelijke betekenis.


Voorbeeld: ASCII-karakters converteren

Met ASCII worden binaire getallen omgezet in afdrukbare en niet-afdrukbare karakters volgens de standaard die je in de bovenstaande tabel ziet. Je kunt deze conversie ook zelf gemakkelijk uitvoeren, mits je begrijpt hoe je binair of hexadecimaal moet rekenen. Elk getallensysteem heeft een basis. In het decimale systeem is deze basis 10, in het binaire en hexadecimale systeem zijn het 2 respectievelijk 16. Je vermenigvuldigt vervolgens de waarde van het cijfer met de waarde van de positie.

Decimale systeem

100

101

102

103

1 10 100 1000

Dus geldt het volgende:

7304 = 7 * 10³ + 3 * 10² + 0 * 10¹ + 4 * 10⁰

De twee andere manieren werken op dezelfde manier:

Binaire systeem

20

21

22

23

1 2 4 8

Hierbij zijn er slechts twee cijfers, dus geldt het volgende:

1011 ≙1 * 2³ + 0 * 2² + 1 * 2¹ + 1 * 2⁰ = 11

Hexadecimale systeem

160

161

162

163

1 16 256 4096


Omdat dit systeem 16 cijfers heeft, geldt het volgende:

F1A9 ≙ 15 * 16³ + 1 * 16² + 10 * 16¹ + 9 * 16⁰ = 61865

Met deze kennis en met de ASCII-tabel kun je ASCII-tekencombinaties naar elk ander getallensysteem omrekenen. We tonen je het woord ‘Digitaal’ als voorbeeld:

‘D’ komt in de ASCII-tabel overeen met de decimale waarde 68, dus:

68 = 1 * 2⁶ + 1 * 2² ≙ 1000100

68 = 4 * 16¹ + 4 * 16⁰ ≙ 44

‘i’ komt overeen met de decimale waarde 105, dus:

105 = 1 * 2⁶ + 1 * 2⁵ + 1 * 2³ + 1 * 2⁰ ≙ 1101001

105 = 6 * 16¹ + 9 * 16⁰ ≙ 69

‘g’ komt overeen met de decimale waarde 103, dus:

103 = 1 * 2⁶ + 1 * 2⁵ + 1 * 2² + 1 * 2¹ + 1 * 2⁰ ≙ 1100111

103 = 6 * 16¹ + 7 * 16⁰ ≙ 67

‘i’ komt overeen met de decimale waarde 105, dus:

105 = 1 * 2⁶ + 1 * 2⁵ + 1 * 2³ + 1 * 2⁰ ≙ 1101001

105 = 6 * 16¹ + 9 * 16⁰ ≙ 69

‘t’ komt overeen met de decimale waarde 116, dus:

116 = 1 * 2⁶ + 1 * 2⁵ + 1 * 2⁴ + 1 * 2² ≙ 1110100

116 = 7 * 16¹ + 4 * 16⁰ ≙ 74

‘a’ komt overeen met de decimale waarde 97, dus:

97 = 1 * 2⁶ + 1 * 2⁵ + 1 * 2⁰ ≙ 1100001

97 = 6 * 16¹ + 1 * 16⁰ ≙ 61

‘l’ komt overeen met de decimale waarde 108, dus:

108 = 1 * 2⁶ + 1* 2⁵ + 1 * 2³ + 1 * 2² ≙ 1101100

108 = 6 * 16¹ + 12 * 16⁰ ≙ 6C

Het woord ‘Digitaal’ kun je dus als volgt weergeven:

Teken D i g i t a a l
Dec 68 105 103 105 116 97 97 108
Bin 1000100 1101001 1100111 1101001 1110100 1100001 1100001 1101100
Hex 44 69 67 69 74 61 61 6C


Tip!
In Windows kun je Unicode-tekens en dus ook ASCII-tekens invoeren met behulp van een toetsencombinatie. Houd de Alt-toets ingedrukt en gebruik het numerieke toetsenbord om de decimale waarde van het teken in te voeren.


ASCII-code: voordelen en toepassingsgebieden

ASCII wordt vandaag de dag nog steeds veel gebruikt, hoewel UTF-8 intussen voor tekstweergave belangrijker is geworden. Maar het duurde tot 2008 voordat Unicode de oudere tekencodering voorbijstreefde en de nieuwe nummer één werd op internet. Het voordeel van UTF-8 is namelijk dat de code naar beneden toe compatibel is: ASCII is een subset van UTF-8 en dus zijn de eerste 128 tekens identiek. Omdat ASCII als de kleinste gemene deler van de meeste nieuwere coderingen geldt, wordt het nog steeds gebruikt in e-mails en URLs.

Feit!
Natuurlijk kunnen gebruikers nu ook Unicode gebruiken om e-mails te maken. Zelfs domeinnamen met umlauts en bijzondere tekens zijn nu mogelijk dankzij de Internationalized Domain Names. Maar in beide gevallen moet de tekst vóór verzending worden omgezet naar ASCII-formaat. Dit gebeurt automatisch, de gebruiker merkt er niets van.


Daarnaast wordt ASCII al geruime tijd gebruikt voor een artistiek doel. ASCII-art is kunst waarbij alleen de printbare karakters uit de ASCII-tabel gebruikt worden om afbeeldingen te maken. Deze kunstwerken variëren van simpele belettering via lijnfiguren tot echte schilderijen. ASCII-kunstenaars gebruiken de verschillende helderheidsniveaus van de individuele karakters en kunnen zo zelfs verschillende tinten weergeven.

Ben je verder geïnteresseerd in codering en programmering? Bij Strato vind je bijvoorbeeld ook artikels over encryptie-methodes, de betekenis van alle statuscodes en het programmeren van je eigen tool.