JSON opmaken
JSON opmaken, controleren en samenvouwen.
Ontwikkelaar
HTML-entiteiten, accenten en de ij.
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.
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.
Slechts een handvol tekens heeft syntactische betekenis in HTML.
| Teken | Entiteit | Wanneer |
|---|---|---|
| & | & | 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.
Door CSS capitalize, die alleen het eerste teken bekijkt. Lever de tekst correct aan.
Nee. Met UTF-8 schrijf je é en ë rechtstreeks, mits je de codering declareert.
Meestal omdat de gedeclareerde codering niet klopt, of de database niet op UTF-8 staat.
Beter niet. Het breekt zoeken en sorteren; gebruik gewoon i gevolgd door j.
Vooral & en <, plus aanhalingstekens in attribuutwaarden.
Nee, alles gebeurt in je browser.