# UTF-8: hoe letters bytes worden [Begrippen uitgelegd](LEESMIJ.md) Een computer bewaart een tekstbestand als getallen. **UTF-8** is een afspraak om tekst om te zetten in [bytes](../gidsen/bits-bytes-en-geheugen.md), en weer terug. Zo'n afspraak heet een **tekstcodering**. Denk aan twee vrienden met hetzelfde codeboek: ze kunnen elkaars berichten lezen doordat ze dezelfde regels gebruiken. ## Waarom die 8? UTF betekent *Unicode Transformation Format*: een omzettingsvorm voor Unicode. De 8 verwijst naar eenheden van acht bits: bytes. Eén Unicode-codepunt gebruikt in UTF-8 één tot vier bytes. Het betekent dus niet dat iedere letter acht bytes gebruikt. Zie de [uitleg van Unicode over codering](https://www.unicode.org/faq/utf_bom.html) (Engels). | Tekst | Codepunten | UTF-8-bytes | | --- | --- | --- | | `A` | 1 | 1 | | `é` | 1 | 2 | | `🐢` | 1 | 4 | Hier is `é` geschreven als één codepunt. Een accent kan ook apart worden opgeslagen; bij [codepunten](codepunten.md) lees je hoe dat zit. ## Probeer het in Pliro ```pliro # taal: nl zeg "Café 🐢" zeg lengte("Aé🐢") ``` Je ziet `Café 🐢` en daarna `3`. `lengte` telt codepunten. De tweede regel toont dus niet de zeven bytes die deze tekst gebruikt. ## Wat is een BOM? **UTF-8 met BOM**, soms geschreven als **UTF-8-BOM**, betekent: een UTF-8-tekstbestand met een extra, onzichtbaar etiket helemaal vooraan. **BOM** is de afkorting van *byte order mark*. Denk aan een sticker op een envelop die de lezer vertelt hoe het bericht erin is opgeslagen. Je teksteditor kan dit etiket toevoegen bij het bewaren. Je ziet het meestal niet tussen de letters van je programma. Het is niet het woord `BOM` dat je in de code typt. Het is ook niet de regel `# taal: nl`. | Bewaaroptie | Wat staat er in het bestand? | Geschikt voor Pliro-broncode? | | --- | --- | --- | | UTF-8 zonder BOM | Jouw tekst opgeslagen als UTF-8 | Ja | | UTF-8 met BOM / UTF-8-BOM | Een onzichtbaar etiket gevolgd door jouw UTF-8-tekst | Nee, Pliro keurt dat etiket momenteel af | Het etiket neemt drie extra bytes in. UTF-8 heeft het niet nodig. Andere programma's kunnen het wel accepteren. Daardoor kan een bestand er normaal uitzien in je editor en toch door Pliro worden afgekeurd. De [Unicode-uitleg](https://www.unicode.org/faq/utf_bom.html#BOM) (Engels) beschrijft de technische achtergrond. ## Hoe bewaar ik zonder dat etiket? Heeft een Pliro-bronbestand uit een andere editor dit probleem? 1. Bewaar een kopie van het oorspronkelijke bestand. 2. Zoek de instelling **tekstcodering**: de optie die bepaalt hoe de editor tekst bewaart. Kies **UTF-8 zonder BOM**. Sommige editors noemen dat gewoon **UTF-8** en bieden **UTF-8 met BOM** apart aan. Lees bij twijfel de beschrijving van de optie. 3. Bewaar het bestand en controleer het opnieuw in Pliro. Laat de brontaalregel bovenaan staan. De bestandsnaam veranderen past deze instelling niet aan. Op Backspace drukken bij de eerste zichtbare letter lost het meestal ook niet op: het etiket is verborgen. Zie je geen duidelijke coderingsoptie? Vraag dan een leerkracht of andere helper om die samen te zoeken. Deze stappen zijn alleen nodig wanneer het probleem voorkomt. Je hoeft geen bytepatronen te leren voordat je kunt programmeren. Veranderen accenten in vreemde tekens? Controleer dan de tekstcodering van je editor. Een andere bestandsextensie verandert de codering niet. Bewaar een kopie voordat je een bestaand bestand omzet. Vervang de schildpad door twee schildpadden. Voorspel eerst wat `lengte` toont. [Unicode](unicode.md) · [Regeleinden](regeleinden.md)