Alle tools draaien in je browser — je bestanden verlaten nooit je apparaat.
All tools154

Ontwikkelaar

HTML-entiteiten omzetten

HTML-entiteiten, accenten en de ij.

Wat het doet. Deze tool zet tekst om naar HTML-entiteiten en weer terug. Voor Nederlandse pagina's geldt een regel die veel mensen verrast: met UTF-8 hoef je accenten helemaal niet te coderen.
Draait in je browserNiets wordt geüploadGeen accountWerkt offline

Hoe je dit gebruikt HTML-entiteiten omzetten

  1. Plak je tekst of je entiteiten.
  2. Kies de richting van de omzetting.
  3. Kopieer het resultaat.

De ij is het echte Nederlandse probleem

Dit is het punt dat in geen enkele andere taal op deze site speelt, en het gaat vaker mis dan je denkt.

De ij is in het Nederlands een digraaf die als één letter functioneert. Bij een hoofdletter aan het begin van een woord gaan beide letters mee: IJsselmeer, IJmuiden, IJs — niet Ijsselmeer.

Waar het misgaat: CSS text-transform met de waarde capitalize maakt er Ijsselmeer van, omdat de browser alleen naar het eerste teken kijkt. Dat is geen bug die je kunt omzeilen met een instelling; je moet de tekst gewoon goed aanleveren.

Hetzelfde gebeurt in databases en spreadsheets die automatisch hoofdletters toepassen, en in veel automatische titelopmaak.

Er bestaat in Unicode ook een los teken voor de ij als één letter, maar gebruik dat niet: het wordt slecht ondersteund, breekt zoeken en sorteren, en de gewone i gevolgd door j is de juiste weergave.

Let ook op sorteren: sommige systemen sorteren ij bij de y, wat een oude conventie is die in moderne toepassingen verwarring geeft. Kies één regel en hanteer die consequent.

En bij zoeken: een gebruiker die "ijs" typt verwacht ook "IJs" te vinden. Normaliseer daarom bij het zoeken en vergelijk hoofdletterongevoelig.

Accenten hoef je niet te coderen

Het tweede belangrijke punt, en het spreekt een hardnekkige gewoonte tegen.

Schrijfwijzen als é voor é of ë voor ë komen uit een tijd waarin de codering van een pagina onduidelijk was of beperkt tot Latin-1.

Tegenwoordig gebruikt vrijwel elke pagina UTF-8, en dan schrijf je é, ë, ï en ó gewoon rechtstreeks.

Er zijn maar twee voorwaarden: het bestand moet werkelijk als UTF-8 zijn opgeslagen, en de codering moet in de kop van de pagina staan. Ontbreekt die verklaring, dan gokt de browser — en gokt meestal verkeerd.

Vandaar de klassieke kapotte tekst: "é" in plaats van "é". De oorzaak is bijna altijd een van drie: het bestand in een andere codering opgeslagen, een verklaring die niet klopt, of een database en verbinding die niet op UTF-8 staan.

Dat laatste wordt het vaakst vergeten: naast de pagina moet je ook de collatie van de tabellen en de tekenset van de verbinding controleren.

En in het Nederlands dragen accenten betekenis: "een" en "één" zijn verschillende woorden, net als "voor" en "vóór". Ze weglaten is niet slordig maar simpelweg een andere zin, en het trema in "coördinatie" of "geïnteresseerd" hoort er net zo goed bij.

Wat je wél moet coderen

Slechts een handvol tekens heeft syntactische betekenis in HTML.

Wat je wél moet coderen
TekenEntiteitWanneer
&&altijd
<<altijd
>>aan te raden in tekst
""in attribuutwaarden
''in attribuutwaarden

De ampersand is het belangrijkste geval, omdat die een entiteit inleidt. Een losse & in een URL, tussen parameters, moet als & worden geschreven om geldige HTML op te leveren.

Hier zit ook de beveiligingskant: als je tekst toont die een gebruiker heeft ingevoerd, is het coderen van deze tekens de bescherming tegen scriptinjectie.

Vertrouw daarvoor niet op een tool als deze maar op de escape-functie van je framework of templatetaal: die kent de context — HTML-tekst, attribuut, JavaScript, URL — en elke context vraagt om iets anders.

Tot slot de vaste spatie  . Die is nuttig tussen getal en eenheid, en in Nederlandse afkortingen als "o.a." of "d.w.z." die niet over twee regels mogen breken. Gebruik hem niet om afstand te maken — dat is de taak van CSS.

Veelgestelde vragen

Waarom wordt mijn IJsselmeer een Ijsselmeer?

Door CSS capitalize, die alleen het eerste teken bekijkt. Lever de tekst correct aan.

Moet ik accenten coderen?

Nee. Met UTF-8 schrijf je é en ë rechtstreeks, mits je de codering declareert.

Waarom staat er onzin in plaats van accenten?

Meestal omdat de gedeclareerde codering niet klopt, of de database niet op UTF-8 staat.

Mag ik het losse ij-teken uit Unicode gebruiken?

Beter niet. Het breekt zoeken en sorteren; gebruik gewoon i gevolgd door j.

Welke tekens moet ik wel coderen?

Vooral & en <, plus aanhalingstekens in attribuutwaarden.

Worden mijn gegevens verstuurd?

Nee, alles gebeurt in je browser.