HTML-entiteiten coderen

Zet tekst om in HTML-entiteiten zodat de tekens van de opmaak overleven, in je browser.

Draait volledig in je browser. Er wordt niets geüpload, gelogd of opgeslagen.

Vijf tekens kunnen niet letterlijk in HTML staan zonder te veranderen wat de opmaak betekent: de ampersand, de twee punthaken en de twee soorten aanhalingstekens. Ze escapen is wat een stuk tekst verandert in een stuk tekst dat een browser toont in plaats van gehoorzaamt.

Hoe het werkt

De minimale modus escapet alleen die vijf tekens. Dat is bijna altijd de juiste keuze: als je pagina UTF-8 is en je bestanden UTF-8 zijn, hoeft een letter met een accent niet ge-escapet te worden, en dat toch doen maakt de broncode moeilijker leesbaar zonder enige winst.

Benoemde entiteiten vervangen alle tekens waaraan HTML 4.01 een naam geeft — 252 in totaal, é als é, © als ©. Gebruik ze als de uitvoer door iets heen moet dat alles boven ASCII vernielt, zoals een oud mailsysteem of een databasekolom met de verkeerde collatie.

Numerieke verwijzingen geven dezelfde garantie per codepunt in plaats van per naam, dus ze werken voor elk teken en niet alleen voor de 252 met een naam. Ze worden hexadecimaal geschreven met de afsluitende puntkomma, die elke parser accepteert.

Voorbeelden

Geval Invoer Resultaat
Een tag die getoond moet worden, niet uitgevoerd <script>alert(1)</script> &lt;script&gt;alert(1)&lt;/script&gt;
Een ampersand in een waarde Tom & Jerry Tom &amp; Jerry
Een letter met accent, met naam café caf&eacute;

Veelgestelde vragen

Is escapen hier genoeg om invoer van een gebruiker veilig te maken?

Voor tekst tussen tags, en voor de waarde van een attribuut tussen aanhalingstekens: ja, want de aanhalingstekens worden ook ge-escapet. Elders niet: een waarde die in een URL, een stijlblok of een scriptblok terechtkomt, heeft een eigen escaping nodig, en HTML-entiteiten zijn voor alle drie het verkeerde gereedschap. Escape op het punt van uitvoer, in de context van die uitvoer, in je code — niet door de tekst in een webpagina te plakken.

Waarom wordt de apostrof ge-escapet als &#039; en niet als &apos;?

&apos; zit niet in HTML 4.01. Het is toegevoegd in XHTML en later in HTML5, en oude browsers tonen het letterlijk. De numerieke vorm heeft altijd en overal gewerkt.

Welke benoemde entiteiten worden ondersteund?

De 252 uit HTML 4.01. HTML5 definieert er zo'n tweeduizend meer, bijna allemaal wiskundig, en die zijn hier niet opgenomen. Alles wat in die set geen naam heeft, blijft in de benoemde modus zoals het is, of wordt in de numerieke modus per codepunt ge-escapet.

Moet je accenten escapen op een moderne site?

Nee. Als de pagina UTF-8 declareert en het bestand als UTF-8 is opgeslagen, is é gewoon é. Benoemde entiteiten zijn om tekst door systemen te loodsen die niet zuiver met UTF-8 omgaan.

Goed om te weten

  • Alles gebeurt in je browser. Wat je plakt, wordt niet geüpload, niet gelogd en niet opgeslagen.

Bronnen

Alle tools in Code