Bestandsformaten
Wat is een TXT-bestand? Platte tekst, codering en UTF-8
TXT is het eenvoudigste documentformaat dat er is: alleen tekens en regeleinden. Toch maken tekencoderingen, de BOM en regeleinden het tot een van de lastigste. We leggen ze stuk voor stuk uit.
Auteur: Hemen Dönüştür Editör EkibiGepubliceerd: 8 min lezen

TXT is het kaalste documentformaat dat een computer kent: geen vet, geen lettertypen, geen pagina-opmaak, alleen tekens en regeleinden. Juist die eenvoud maakt het uiterst draagbaar. Een tekstbestand van vijftig jaar geleden kun je vandaag nog openen, en wat je vandaag schrijft, opent waarschijnlijk over tientallen jaren ook nog. Maar "platte tekst" is minder simpel dan het lijkt. Letters met accenten die veranderen in "é" of "?", regels die samenvallen tot één, een onzichtbaar teken aan het begin van een bestand: dat komt allemaal door één verborgen detail in een TXT-bestand, de tekencodering. Dit artikel legt uit hoe TXT-bestanden werken en hoe je deze problemen oplost.
Wat is een TXT-bestand?
Een bestand met de extensie .txt bevat niets dan teksttekens. Er is geen header, geen metadata en geen opmaak; elke byte hoort bij de tekst zelf. De cruciale vraag is: welke byte staat voor welk teken? Die koppeling heet de tekencodering, en een TXT-bestand vermeldt meestal niet welke het gebruikt. Het programma dat het opent, moet dat raden.
Een korte geschiedenis: van ASCII naar UTF-8
ASCII verscheen voor het eerst in 1963 als ASA X3.4-1963. Het gebruikt 7 bits en definieert 128 tekens: het Engelse alfabet, cijfers, leestekens en stuurtekens zoals de regelopschuiving (line feed). Letters zoals é, ñ, ö of de Turkse ı en ş horen niet bij ASCII.
Om dat gat te dichten ontstonden codetabellen (code pages), die de overige 128 waarden van een 8-bits byte aan verschillende talen toewezen: Windows-1252 en ISO-8859-1 voor West-Europese talen, Windows-1254 en ISO-8859-9 voor het Turks, en nog veel meer. Het probleem is dat dezelfde byte in verschillende codetabellen verschillende letters betekent. De byte FD is bijvoorbeeld "ý" in Windows-1252 maar "ı" in Windows-1254. Een programma dat de verkeerde codetabel raadt, geeft de tekst verkeerd weer.
De blijvende oplossing was Unicode, dat elk teken van elk schrift één uniek nummer geeft. UTF-8 is de meest gebruikte manier om die nummers in bytes om te zetten. Volgens Rob Pike ontwierp Ken Thompson UTF-8 op een placemat in een diner in New Jersey, op een avond rond september 1992. De huidige definitie is RFC 3629 uit november 2003: UTF-8 codeert elk teken van U+0000 tot U+10FFFF in 1 tot 4 bytes, en schrijft ASCII-tekens als dezelfde enkele bytes als ASCII.
Op het web zie je hoe dominant UTF-8 is geworden: volgens gegevens van W3Techs van 15 oktober 2026 gebruikt 99,1% van de websites waarvan de tekencodering bekend is UTF-8, gevolgd door ISO-8859-1 met 0,8% en Windows-1252 met 0,2%.
Wat zit er in een TXT-bestand?
Tekens en bytes
Sla het woord "café" op als UTF-8 en als Windows-1252, en je krijgt verschillende bytes:
Text: c a f é
UTF-8: 63 61 66 C3 A9 (5 bytes)
Windows-1252: 63 61 66 E9 (4 bytes)
Een programma dat het UTF-8-bestand als Windows-1252 leest, toont C3 en A9 als twee losse tekens: "é". Andersom behandelt een programma dat het Windows-1252-bestand als UTF-8 leest E9 als ongeldig en toont het in plaats daarvan "�". Bijna elk probleem met verminkte tekens is een van deze twee scenario's.
De BOM (byte order mark)
Sommige programma's zetten de bytes EF BB BF aan het begin van een UTF-8-bestand. Dat is de UTF-8-vorm van het teken U+FEFF, gebruikt als handtekening die betekent "dit bestand is UTF-8". RFC 3629 merkt op dat deze handtekening altijd als die drie bytes verschijnt. Volgens de Unicode-FAQ is een BOM in UTF-8 niet verplicht en dient hij alleen als handtekening, en moet je hem vermijden in protocollen die aan het begin van een bestand ASCII-tekens verwachten. In de praktijk helpt een BOM sommige oudere Windows-programma's en Excel om UTF-8 te herkennen, maar hij kan Unix-shellscripts en configuratiebestanden die door bepaalde software worden gelezen laten mislukken.
In UTF-16 is de BOM nog belangrijker, omdat hij de lezer de bytevolgorde vertelt: FF FE betekent little-endian en FE FF big-endian UTF-16.
Regeleinden
Ook het teken dat het einde van een regel markeert, hangt af van het besturingssysteem:
| Systeem | Regeleinde | Bytes |
|---|---|---|
| Windows | CRLF | 0D 0A |
| Linux, macOS | LF | 0A |
| Klassiek Mac OS (vóór OS X) | CR | 0D |
Jarenlang begreep Kladblok in Windows alleen CRLF, waardoor een bestand dat op Linux was geschreven als één lange regel verscheen. Microsoft kondigde op 8 mei 2018 ondersteuning voor LF en CR in Kladblok aan, en de wijziging bereikte gebruikers met Windows 10 versie 1809.
Waar wordt TXT gebruikt?
- Notities en concepten: snelle aantekeningen die geen opmaak nodig hebben.
- Software: README-bestanden, licentieteksten, broncode, configuratiebestanden en logbestanden.
- Gegevensuitwisseling: eenvoudige lijsten en exports die tussen systemen worden uitgewisseld.
- Langdurige opslag: tekst die moet worden gearchiveerd zonder afhankelijk te zijn van een programma.
- Toegankelijkheid en verwerking: de schoonste invoer voor schermlezers, zoekmachines en tekstanalysetools.
Sterke en zwakke punten
Sterke punten: elk apparaat en elk besturingssysteem opent het. Bestanden zijn piepklein. Er is geen afhankelijkheid van programmaversies en weinig risico op beschadiging. Versiebeheersystemen zoals Git kunnen wijzigingen regel voor regel tonen. Het kan geen macro's of ingesloten objecten bevatten, wat het veilig maakt.
Zwakke punten: het kan geen opmaak, afbeeldingen, tabellen of links bevatten. Omdat de codering niet in het bestand staat, kan die verkeerd worden geraden. Verschillen in regeleinden zorgen tussen systemen voor kleine maar vervelende problemen. Heb je structuur nodig, zoals koppen en lijsten, dan is Markdown een betere keuze.
Met welke programma's open je TXT?
Kladblok op Windows, TextEdit op macOS en gedit en vergelijkbare editors op Linux openen allemaal TXT, en browsers kunnen tekstbestanden direct weergeven. Geavanceerde editors zoals Visual Studio Code, Notepad++ en Sublime Text tonen de codering en het type regeleinde in de statusbalk en laten je beide met één klik wijzigen. Daarmee zijn ze het handigst om coderingsproblemen op te sporen.
Veelvoorkomende problemen en oplossingen
Letters met accenten zien eruit als "é" of "ü"
Het bestand is als UTF-8 opgeslagen, maar het programma dat het leest gaat uit van Windows-1252. Open het opnieuw als UTF-8 in een editor waarin je de codering kunt kiezen. Ziet een CSV- of tekstbestand er in Excel zo uit, dan helpt opslaan als UTF-8 met BOM meestal.
Tekens zijn vervangen door "?" of "�"
Het bestand is in een oude codetabel opgeslagen, maar wordt als UTF-8 gelezen. Open het in je editor met de juiste codetabel geselecteerd en sla het daarna op als UTF-8. Is de tekst met echte "?"-tekens opgeslagen, dan zijn de oorspronkelijke tekens verdwenen en moet je terug naar de bron.
Alle tekst staat op één regel
Een oude editor begrijpt geen LF-regeleinden. Gebruik een actuele versie van Kladblok of een geavanceerde editor, of zet de regeleinden om naar CRLF.
Aan het begin van het bestand staat een onzichtbaar teken
Dat is meestal de BOM. Mislukt een script of configuratiebestand op de eerste regel, sla het dan op als "UTF-8 zonder BOM".
Tips voor het converteren van TXT-bestanden
Bij onze converter worden TXT-bestanden naar onze server geüpload en binnen 30 minuten verwijderd. De codering wordt automatisch herkend: eerst wordt naar de BOM gekeken (UTF-8, UTF-16 little- en big-endian); zonder BOM wordt gecontroleerd of het bestand geldige UTF-8 is; is dat niet zo, dan wordt het gelezen als Windows-1254, de oude Turkse codetabel van Windows. Bestanden met veel NUL-bytes worden als binair en niet als tekst behandeld, en dan krijg je de melding dat het geen tekstbestand is.
- Met TXT naar Word en TXT naar PDF wordt elke regel een alinea en blijven lege regels behouden. Inspringing aan het begin van een regel (code, gedichten of genummerde artikelen) wordt omgezet in vaste spaties zodat ze niet verloren gaat, en tabs aan het begin worden vier spaties.
- TXT naar Markdown is een goed vertrekpunt als je platte tekst later met koppen en lijsten wilt verrijken.
- De andere kant op laten PDF naar TXT en Word naar TXT de opmaak vallen en scheiden ze koppen en alinea's met lege regels. De TXT-bestanden die wij maken, worden opgeslagen als UTF-8 met BOM, zodat letters met accenten goed worden weergegeven in programma's zoals Kladblok en Excel.
Veelgestelde vragen
In welke codering sla ik een TXT-bestand op?
Kies voor nieuwe bestanden UTF-8. Het ondersteunt elke taal en is op het web vrijwel universeel geworden. Laat de BOM weg als het bestand wordt gelezen door software die UTF-8 zonder BOM verwacht; voeg hem toe als het bestand in programma's zoals Excel wordt geopend.
Wat is het verschil tussen UTF-8 en UTF-8 met BOM?
De inhoud is identiek; de versie met BOM begint alleen met de bytes EF BB BF. Die handtekening helpt sommige programma's de codering te herkennen, maar kan in andere als onzichtbaar eerste teken opduiken.
Wat is het verschil tussen TXT en RTF?
TXT bevat alleen tekens. RTF draagt opmaak zoals vet, cursief, lettertypen en tabellen via stuuropdrachten in de tekst. Heb je geen opmaak nodig, dan is TXT eenvoudiger en draagbaarder.
Hoe kom ik achter de codering van een TXT-bestand?
Editors zoals Visual Studio Code en Notepad++ tonen de codering in de statusbalk. Actuele versies van Kladblok tonen ook de codering en het type regeleinde in de statusbalk.
Kan een TXT-bestand een virus bevatten?
Een plat tekstbestand bevat op zichzelf geen uitvoerbare code. Let wel op dubbele extensies zoals "document.txt.exe"; als je in Windows de bestandsextensies zichtbaar maakt, zie je die truc sneller.
Bronnen
- IETF RFC 3629: UTF-8, a transformation format of ISO 10646 (november 2003)
- Unicode Consortium: FAQ over UTF-8, UTF-16, UTF-32 en BOM
- Rob Pike: UTF-8 history
- W3Techs: gebruiksstatistieken van tekencoderingen op websites
- Microsoft: Introducing extended line endings support in Notepad (8 mei 2018)
- Wikipedia: ASCII (secundaire bron)


