De ASCII-tabel: hoe 128 getallen de basis werden van tekst
ASCII, een afkorting voor American Standard Code for Information Interchange, is de codering die computers leerde het eens te zijn over wat een letter is. Gepubliceerd in 1963 en doorontwikkeld in de jaren zestig, koppelt het elke basisteken van Engelse tekst, de cijfers en een aantal stuurseinen aan getallen die een machine kan opslaan en verzenden. Wanneer je de toets voor een hoofdletter A indrukt, slaat je computer geen vorm op — het slaat het getal 65 op. ASCII is de opzoektabel die dat getal overal waarheen het reist de betekenis A geeft.
De standaard is beroemd compact. ASCII is een 7-bits-code, wat betekent dat elk teken past binnen zeven binaire cijfers en het volledige repertoire precies 2 tot de macht 7 omvat, ofwel 128 afzonderlijke codepunten genummerd 0 tot en met 127. Die zuinigheid was opzettelijk. Vroege telexapparaten en modems waren traag en duur, dus elke bit telde. Zeven bits waren voldoende voor hoofd- en kleine letters van het Latijnse alfabet, de tien cijfers, veelgebruikte leestekens en de signaalkarakters die apparaten gesynchroniseerd hielden, met één bit over die veel systemen gebruikten voor foutcontrole.

Twee helften: stuurkarakters en afdrukbare tekens
De tabel valt netjes uiteen in twee gebieden. Codes 0 tot en met 31, plus code 127 (DEL), zijn de stuurkarakters. Deze drukken geen glyph op het scherm af. In plaats daarvan geven ze een apparaat een instructie: code 9 is een horizontale tab, code 10 is de regelinvoer die naar een nieuwe regel gaat, code 13 is de regelterugloop en code 7 is de bel die ooit een terminal hoorbaar deed rinkelen. In totaal bestaan er drieëndertig van deze signaalcodes, en hoewel veel ervan nu historische curiosa zijn, blijven regelinvoer, regelterugloop en tab essentieel voor de manier waarop tekstbestanden vandaag de dag worden opgemaakt.
Codes 32 tot en met 126 zijn de afdrukbare tekens, vijfennegentig in totaal. Code 32 is de spatie, die als afdrukbaar telt omdat hij de cursor vooruitschuift, ook al is er niets te zien. Daarna volgen de leestekens en symbolen, de cijfers 0 tot en met 9 bij codes 48 tot en met 57, de hoofdletters A tot en met Z bij 65 tot en met 90, en de kleine letters a tot en met z bij 97 tot en met 122. Uit deze indeling volgt een fraaie eigenschap: de kleine letter en de hoofdletter van hetzelfde teken verschillen precies 32 van elkaar, waardoor het omschakelen van kleine naar hoofdletter door het omzetten van één bit mogelijk is. Deze regelmatigheden zijn geen toeval; ze zijn ontworpen zodat sorteren en omzetting van hoofdletters met eenvoudige rekenkunde kon worden gedaan.
Decimaal, hexadecimaal en binair: drie weergaven van één getal
Elke ASCII-code is gewoon een getal, en je zult het op drie manieren zien geschreven. Decimaal is de alledaagse grondtal-10-vorm, dus A is 65. Hexadecimaal, grondtal 16, is de vorm waarnaar programmeurs grijpen omdat het aansluit bij bytes: A is 0x41 en het afdrukbare bereik loopt van 0x20 tot 0x7E. Binair, grondtal 2, is de vorm die de hardware daadwerkelijk opslaat, zodat A 1000001 is over zijn zeven bits. Hetzelfde teken, drie notaties, en vlot kunnen bewegen tussen die drie is een kernvaardigheid wanneer je geheugenuitvoer of netwerkverkeer leest. Als je vaak met deze omrekeningen werkt, houdt de bredere set referentietabellen op speedor.net de koppelingen op één klik afstand.

Waar ASCII nog steeds van belang is
Het zou een vergissing zijn om ASCII onder geschiedenis in te delen. Het leeft in het dagelijkse werk van iedereen die code aanraakt. Programmeertalen behandelen stringliteralen, bronbestanden en protocolsleutelwoorden op byteniveau als ASCII. Netwerkprotocollen zoals HTTP-headers, SMTP en veel configuratieformaten zijn gedefinieerd in ASCII zodat ze voor mensen leesbaar blijven. Wanneer een string er beschadigd uitziet, pakken ontwikkelaars een hexweergave en lezen de ruwe bytes af aan de hand van de ASCII-tabel om een stuurkarakter of een verkeerde regelafsluitng op te sporen. URL-codering, Base64 en escape-reeksen zijn allemaal gebaseerd op ASCII-waarden. Voor iedereen die problemen met tekencoderingen oplost, maakt een snelle referentie naast je ontwikkelaarstools van een mysterieuze byte een duidelijk antwoord.
Van ASCII naar Unicode en UTF-8
ASCII was prachtig voor Engels en vrijwel niets anders. Een maximum van 128 tekens kan geen letters met accenten, Cyrillisch, Chinees, Arabisch of emoji bevatten. Unicode heeft dat opgelost door een uniek getal, een codepunt genaamd, toe te wijzen aan elk teken in elk schrijfsysteem — nu meer dan honderdduizend in totaal. Cruciaal is dat Unicode een catalogus van tekens is, geen opslagformaat, dus het heeft een codering nodig om die codepunten om te zetten in bytes.
UTF-8 is die codering, en het is de reden dat ASCII nooit echt verdwenen is. UTF-8 gebruikt één tot vier bytes per teken en is zodanig ontworpen dat codepunten 0 tot en met 127 — het volledige ASCII-bereik — worden opgeslagen in één byte die identiek is aan gewone ASCII. Dat maakt UTF-8 volledig achterwaarts compatibel: elk geldig ASCII-bestand is al een geldig UTF-8-bestand. Tekens boven 127 gebruiken extra bytes. Deze elegante compatibiliteit is een grote reden waarom UTF-8 tegenwoordig de overweldigende meerderheid van het web aandrijft. Kortom: ASCII is de oorspronkelijke kern van 128 tekens, Unicode is de universele catalogus die die kern bevat en UTF-8 is de codering die beide draagt terwijl ASCII-tekst byte voor byte ongewijzigd blijft.
Veelgestelde vragen
Hoeveel tekens bevat de ASCII-tabel?
Standaard ASCII definieert 128 tekens, genummerd 0 tot en met 127. Hiervan zijn 95 afdrukbare tekens inclusief de spatie, en 33 zijn stuurkarakters die apparaten aansturen in plaats van een glyph af te drukken.
Wat is het verschil tussen stuurkarakters en afdrukbare tekens?
Stuurkarakters, codes 0 tot en met 31 plus 127, geven een apparaat een instructie zoals een regelinvoer of tab en produceren geen zichtbare glyph. Afdrukbare tekens, codes 32 tot en met 126, zijn de letters, cijfers, leestekens en de spatie die je daadwerkelijk op het scherm ziet.
Waarom is ASCII een 7-bits-code?
Zeven bits geven precies 128 combinaties, wat voldoende was voor Engelse letters, cijfers, leestekens en stuursignalen, terwijl bandbreedte werd bespaard op de trage vroege hardware. De achtste bit in een byte was vaak gereserveerd voor pariteitscontrole op fouten.
Wat is de ASCII-code voor de letter A?
Hoofdletter A is decimaal 65, hexadecimaal 0x41 en binair 1000001. Kleine letter a is decimaal 97, precies 32 hoger — een ingebouwd patroon waardoor omzetting van hoofdletters mogelijk is met eenvoudige rekenkunde.
Is ASCII hetzelfde als Unicode?
Nee. ASCII omvat 128 tekens, terwijl Unicode meer dan honderdduizend tekens in elk schrijfsysteem catalogiseert. ASCII is feitelijk de eerste 128 codepunten van Unicode, dus het is een kleine deelverzameling van de grotere standaard.
Hoe verhoudt UTF-8 zich tot ASCII?
UTF-8 is een codering voor Unicode die codepunten 0 tot en met 127 opslaat in één byte die identiek is aan ASCII. Dit maakt elk ASCII-bestand tot een geldig UTF-8-bestand, waardoor UTF-8 achterwaarts compatibel is en het moderne web domineert.
