Skip to content

Gratis HTML-entiteiten decoder — HTML unescapen

Decodeer HTML-entiteiten en unescape HTML online — gratis, geen account, 100% in je browser. Zet genoemde, decimale & hex-referenties terug naar tekens; nooit geüpload.

Geen tracking Draait in je browser Gratis

Je tekst wordt lokaal in je browser gedecodeerd en nooit geüpload, gelogd of opgeslagen. Hij blijft op dit apparaat.

0 tekens
Gedecodeerde HTML / tekst
0 tekens
Beoordeeld op correctheid van de entiteitendecodering-specificatie (genoemd / decimaal / hex oplossen), reconstructie van astrale tekens en emoji, soepele parsing van verouderde entiteiten, het XSS-risico van het renderen van gedecodeerde niet-vertrouwde tekst (en de re-escape-richtlijn die het beperkt), de geen-netwerk/geen-opslag-privacy van de invoer, en toegankelijkheid (gelabelde besturingselementen, live-regio-aankondigingen bij decoderen en kopiëren). — Go Tools Encoding-team · Jun 17, 2026

Wat is HTML-entiteitendecodering?

HTML-entiteitendecodering — ook wel HTML unescapen genoemd — is het proces waarbij tekenreferenties terug omgezet worden naar de tekens die ze vertegenwoordigen. Waar encoderen een letterlijke < vervangt door de entiteit < zodat een browser die als tekst toont, doet decoderen het omgekeerde: het scant een tekenreeks op referenties als <, &, <, > of © en vervangt elk door het werkelijke teken (<, &, <, >, ©). Het is de bewerking die je uitvoert wanneer je opmaak hebt die in geëscapede vorm opgeslagen of verzonden werd en je de echte tekst terug nodig hebt — om die te lezen, te bewerken, aan een ander programma te geven of uit te zoeken waarom een pagina &lt; rendert in plaats van <.

Het is de moeite waard om precies te zijn over wat deze tool doet. Hij decodeert entiteiten naar tekens; hij herformatteert of valideert de opmaak niet. Wil je een geëscapede tekenreeks nemen en haar letterlijke tekens herstellen, dan is dit de juiste tool. Om de andere kant op te gaan en tekens in entiteiten om te zetten, gebruik je de HTML-entiteiten encoder; en om een blok HTML in te springen en netjes te maken, gebruik je de HTML-formatter. Encoderen en decoderen zijn exacte inversen, dus een tekenreeks die door de encoder en terug door de decoder gestuurd wordt, komt ongewijzigd terug.

Er zijn drie soorten referentie die de decoder moet begrijpen, en hij verwerkt ze alle. Een genoemde referentie gebruikt een gedefinieerd label (< voor <, © voor ©, — voor —); een decimale numerieke referentie schrijft het Unicode-codepunt in grondtal 10 (< voor <); en een hexadecimale numerieke referentie schrijft hetzelfde codepunt in grondtal 16 (< voor <), passend bij de U+XXXX-notatie van de Unicode-standaard. Een robuuste decoder accepteert ze alle, in elke mix, omdat verschillende encoders verschillende vormen weergeven. De tabel hieronder toont de referenties die je het vaakst zult tegenkomen en het teken waarnaar elk decodeert:

| Entiteit (genoemd) | Decimaal | Hex | Decodeert naar | |----------------|---------|-----|------------| | &lt; | &#60; | &#x3C; | < | | &gt; | &#62; | &#x3E; | > | | &amp; | &#38; | &#x26; | & | | &quot; | &#34; | &#x22; | " | | &#x27; | &#39; | &#x27; | ' | | &nbsp; | &#160; | &#xA0; | (vaste spatie) | | &copy; | &#169; | &#xA9; | © | | &reg; | &#174; | &#xAE; | ® | | &trade; | &#8482; | &#x2122; | ™ | | &euro; | &#8364; | &#x20AC; | € | | &pound; | &#163; | &#xA3; | £ | | &mdash; | &#8212; | &#x2014; | — | | &ndash; | &#8211; | &#x2013; | – | | &hellip; | &#8230; | &#x2026; | … | | &#x1F600; | &#128512; | &#x1F600; | 😀 |

Twee gedragingen onderscheiden een grondige decoder. Ten eerste reconstrueert hij astrale tekens — alles boven U+FFFF, inclusief de meeste emoji — uit hun numerieke referenties in plaats van een kapot half teken te produceren; 😀 wordt correct 😀. Ten tweede volgt hij de soepele parsing van de browser voor de kleine set verouderde genoemde entiteiten die historisch zonder afsluitende puntkomma verschenen, zodat &copy 2026 nog steeds naar © 2026 decodeert, ook al zou strikte XML het afwijzen. Deze tool doet beide en komt overeen met het gedrag van de veelgebruikte he-bibliotheek, zodat zijn uitvoer overeenstemt met wat een echte browser zou renderen.

Een waarschuwing die bij elke decoder hoort: gedecodeerde tekst is per definitie ge-unescaped. Decoderen is de inverse van het escapen dat pagina's tegen cross-site scripting beschermt, dus een gedecodeerde tekenreeks met een <script>-tag of een event-handler is opnieuw actieve, gevaarlijke opmaak. Decodeer nooit niet-vertrouwde invoer en voeg het dan met innerHTML in een pagina in — dat heropent precies het gat dat encoderen moest dichten. Decodeer wanneer je de ruwe tekens nodig hebt om te lezen, bewerken of op te slaan; als het resultaat terug in HTML gerenderd wordt, escape het dan eerst opnieuw in zijn doelcontext. En omdat elke byte in je browser verwerkt wordt, kruisen de geëscapede tekenreeksen die je decodeert — zelfs een privégegeven of een niet-gepubliceerd concept — nooit het netwerk. Voor naburige conversies handelt de URL-encoder/-decoder percent-encodering af en Base64 encoderen/decoderen binair-veilig transport.

// Decoding is the inverse of escaping. The classic round-trip:
//   &lt;  →  <     &gt;  →  >     &amp;  →  &     &quot;  →  "     &#x27;  →  '

// Browser — the safest decoder is the platform itself. Use textarea, NOT innerHTML on a live node,
// so the decoded markup is never executed.
function decodeHtml(str) {
  const ta = document.createElement('textarea');
  ta.innerHTML = str;        // the parser resolves entities into text
  return ta.value;           // .value is plain text — no script runs
}

decodeHtml('&lt;div&gt; &amp; &copy;');   // → '<div> & ©'
decodeHtml('&#60;&#x3E;');                // → '<>'
decodeHtml('&#x1F600;');                 // → '😀'
decodeHtml('&copy 2026');                // → '© 2026'  (lenient, no semicolon)

// ---------------------------------------------------------------
// SECURITY: decoded text is unescaped. Never do this with untrusted input:
//   el.innerHTML = decodeHtml(userInput);   // ❌ reopens the XSS hole
// If the decoded value must be displayed, re-escape it in its destination context first,
// or assign it as text:
//   el.textContent = decodeHtml(userInput); // ✅ shown as literal text

// ---------------------------------------------------------------
// Node.js (no DOM) — use a tested library such as he:
//   import { decode } from 'he';
//   decode('&lt;div&gt; &amp; &copy;');     // → '<div> & ©'

Belangrijkste functies

Decodeert genoemde, decimale en hex-referenties

Lost de volledige HTML5-set genoemde entiteiten op (<, ©, —), decimale numerieke referenties (<) en hexadecimale referenties (<) in elke combinatie, exact zoals een browser zou doen — zodat hij omdraait wat een encoder ook produceerde.

Verwerkt emoji en astrale tekens

Numerieke referenties boven U+FFFF worden gereconstrueerd tot hun volledige codepunt, zodat 😀 decodeert naar 😀 in plaats van een kapotte surrogaat. Zeldzame CJK-ideogrammen en wiskundige symbolen decoderen ook getrouw.

Soepele parsing van verouderde entiteiten

Volgt de achterwaarts compatibele regels van de browser voor genoemde entiteiten zonder afsluitende puntkomma, zodat verouderde of slordige opmaak als &copy 2026 nog steeds naar © 2026 decodeert waar een strikte parser het kapot zou laten.

Live, direct decoderen

De uitvoer wordt bijgewerkt terwijl je typt — geen verzendknop, geen retourlatentie. Plak een groot geëscaped blok en de herstelde tekst verschijnt onmiddellijk, klaar om te kopiëren.

Ingebouwde entiteit-snelreferentie

Een referentietabel die de meest voorkomende entiteiten — de gereserveerde vijf plus ©, ®, ™, €, —,   en meer — koppelt aan hun tekens staat direct op de pagina, zodat je nooit elders een entiteit hoeft op te zoeken.

Wissel met één klik naar de encoder

Richting omwisselen springt direct naar de HTML-entiteiten encoder om de bewerking om te draaien. Encoderen en decoderen zijn exacte inversen, dus je kunt tekst zonder verlies heen en weer halen.

100% privé, alleen in de browser

Al het decoderen gebeurt op je apparaat met JavaScript — geen netwerkverzoeken, geen logging, geen opslag, verifieerbaar in DevTools → Netwerk. Privé-databasefragmenten, e-mailinhoud en niet-gepubliceerde concepten verlaten het tabblad nooit.

Beschikbaar in 15 talen

De volledige interface — labels, instructies en uitleg — is gelokaliseerd in 15 talen, zodat de tool en het beveiligingsadvies duidelijk zijn waar je team ook werkt.

Uitgewerkte voorbeelden

Een mix van genoemde entiteiten decoderen

&lt;div&gt; &amp; &copy;
<div> & ©

De decoder lost elke genoemde referentie op naar het teken dat ze vertegenwoordigt: < wordt <, > wordt >, & wordt & en © wordt het copyrightteken ©. Dit is het dagelijkse geval — een tekenreeks die in geëscapede vorm opgeslagen of verzonden werd terugzetten naar de echte tekens, zodat je de opmaak kunt lezen, bewerken of opnieuw verwerken. Decoderen is de exacte inverse van encoderen, dus een tekenreeks die door de encoder en terug gehaald wordt, komt ongewijzigd aan.

Decimale en hexadecimale numerieke referenties decoderen

&#60;&#x3E;
<>

Numerieke tekenreferenties werken in beide grondtallen: < is de decimale vorm van codepunt 60, oftewel <, en > is de hexadecimale vorm van codepunt 62, oftewel >. De decoder verwerkt decimale (&#NNN;) en hex (&#xHHH;) referenties uitwisselbaar en lost elk op naar het Unicode-teken. Dit is belangrijk omdat encoders het oneens zijn over welke vorm ze weergeven — sommige verkiezen decimaal, andere hex — en een robuuste decoder moet beide accepteren.

Een verouderde entiteit zonder puntkomma decoderen

&copy 2026
© 2026

Oudere HTML stond een kleine set genoemde entiteiten toe zonder afsluitende puntkomma, en browsers lossen ze nog steeds op voor achterwaartse compatibiliteit — &copy 2026 rendert als © 2026. Deze decoder volgt dezelfde soepele parseerregels, dus hij herstelt het bedoelde teken uit slordige of verouderde opmaak die een strikte parser onaangeroerd zou laten. Debug je tekst die een verdwaalde &copy toont, dan is dit waarom.

Een emoji uit zijn hex-referentie decoderen

&#x1F600;
😀

Numerieke referenties zijn niet beperkt tot het Basic Multilingual Plane — 😀 is de hexadecimale referentie voor codepunt U+1F600, de grijnzende-gezicht-emoji 😀. De decoder reconstrueert astrale tekens (alles boven U+FFFF) correct uit hun numerieke referenties, zodat emoji, zeldzame CJK-ideogrammen en wiskundige symbolen allemaal getrouw decoderen in plaats van te veranderen in een kapotte surrogaat of een vervangingsglyph.

Een geëscapede attribuuttekenreeks decoderen

&lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&#x27;s&lt;/a&gt;
<a href="x">Tom & Jerry's</a>

Dit is een volledige heen-en-terugcyclus van het paradevoorbeeld van de encoder. " lost op naar een dubbel aanhalingsteken, ' (de compatibiliteitsveilige numerieke apostrof) lost op naar ', en de punthaak- en ampersand-entiteiten lossen op naar hun letterlijke tekens, waarmee het oorspronkelijke Tom & Jerry's exact gereconstrueerd wordt. Omdat de decoder genoemde, decimale en hex-referenties in elke combinatie accepteert, draait hij om wat een encoder ook produceerde, ongeacht welke entiteitstijl gebruikt werd.

Zo gebruik je de HTML-entiteiten decoder

  1. 1

    Plak de geëscapede tekenreeks

    Zet de tekst vol HTML-entiteiten in het invoervak. De gedecodeerde tekens worden live bijgewerkt terwijl je typt — er is geen verzendknop en er wordt niets ergens heen gestuurd.

  2. 2

    Lees het gedecodeerde resultaat

    Genoemde, decimale en hexadecimale referenties lossen allemaal automatisch op naar de tekens die ze vertegenwoordigen, inclusief emoji en andere astrale codepunten. Er is geen notatiekeuze nodig — de decoder detecteert het type van elke referentie.

  3. 3

    Kopieer de gedecodeerde tekst

    Klik op Kopiëren om de herstelde tekens op je klembord te zetten, klaar om in een editor, een database of een andere tool te plakken. Wissen stelt beide vensters opnieuw in voor de volgende tekenreeks.

  4. 4

    Escape opnieuw voordat je niet-vertrouwde tekst weer toont

    Als de gedecodeerde uitvoer terug in een webpagina gerenderd wordt en een deel ervan uit een niet-vertrouwde bron komt, escape het dan eerst opnieuw met de encoder om geen XSS-gat te heropenen.

  5. 5

    In plaats daarvan encoderen? Wissel de richting

    Gebruik Richting omwisselen om over te schakelen naar de HTML-entiteiten encoder wanneer je ruwe tekens in entiteiten wilt omzetten.

Veelgemaakte fouten bij HTML-decoderen

Gedecodeerde niet-vertrouwde invoer met innerHTML gerenderd

Decoderen unescapet de tekst, dus een gedecodeerde <script>-tag is weer actieve opmaak. Die via innerHTML invoegen voert hem uit — een schoolvoorbeeld van een XSS-gat. Escape gedecodeerde niet-vertrouwde tekst opnieuw, of gebruik textContent.

✗ Fout
el.innerHTML = decode(userInput)  →  script runs (XSS)
✓ Correct
el.textContent = decode(userInput)  →  shown as text

Slechts één keer gedecodeerd terwijl de tekst dubbel-geëncodeerd was

Dubbel-geëncodeerde tekst heeft twee decode-passes nodig. &lt; één keer decoderen levert < op, niet <. Decodeer opnieuw — en herstel de pijplijn zodat die om te beginnen nooit dubbel-encodeert.

✗ Fout
&amp;lt;  decoded once  →  &lt;  (still an entity)
✓ Correct
&amp;lt;  decoded twice  →  <

HTML-decodering verward met URL- of Base64-decodering

Entiteiten, percent-encodering en base64 zijn verschillende schema's. Een HTML-decoder zet %20 niet om in een spatie en decodeert geen base64-blob. Gebruik de passende tool voor elke encoderingslaag.

✗ Fout
HTML-decode "%3Cdiv%3E"  →  unchanged, still percent-encoded
✓ Correct
URL-decode "%3Cdiv%3E"  →  <div>

Een regex gebruikt die numerieke of astrale referenties mist

Een zelfgeschreven regex voor genoemde entiteiten slaat <, > en emoji als 😀 stilletjes over en laat ze in de uitvoer. Gebruik de browser-parser of een geteste bibliotheek die alle referentievormen dekt.

✗ Fout
regex for &name; only  →  &#x1F600; left undecoded
✓ Correct
full decoder  →  &#x1F600; becomes 😀

Uitvoer als mojibake weergegeven na het decoderen

é decoderen geeft de echte é, maar als de ontvangende pagina of het bestand niet als UTF-8 geserveerd wordt, corrumpeert het teken tot onzin. Stel de tekenset in op UTF-8 voordat je gedecodeerde tekst wegschrijft.

✗ Fout
decoded é into a Latin-1 file  →  é mojibake
✓ Correct
decoded é into a UTF-8 file  →  é

Strikte parsing aangenomen en verouderde entiteiten gemist

Een strikte XML-parser negeert entiteiten zonder puntkomma als &copy en laat ze letterlijk. Browsers lossen ze op, dus een getrouwe decoder moet dat ook — anders wijkt je uitvoer af van wat gebruikers zien.

✗ Fout
strict parse of "&copy 2026"  →  &copy 2026 literal
✓ Correct
lenient parse of "&copy 2026"  →  © 2026

Wie gebruikt deze tool

Opmaak lezen die in geëscapede vorm opgeslagen is
Een HTML-fragment uit een database, een log of een JSON-veld gehaald waar het als <div>… opgeslagen was? Decodeer het om de echte opmaak te zien en te bewerken in plaats van te turen naar een muur van entiteiten.
Dubbel-geëncodeerde tekst debuggen
Zie je &lt; op een live-pagina waar < zou moeten staan? Plak het hier om te bevestigen dat het dubbel-geëncodeerd is, decodeer het twee keer om het origineel te herstellen, en traceer de dubbele escaping terug naar zijn bron in je pijplijn.
Platte tekst uit HTML-fragmenten halen
De voor mensen leesbare tekst nodig uit een geëscapede e-mailtekst of CMS-veld? Decodeer de entiteiten om de werkelijke tekens te herstellen voordat je de inhoud indexeert, doorzoekt of elders weergeeft.
Tekens herstellen uit gescrapete of geëxporteerde data
Exports en scrapers leveren inhoud vaak met entiteiten intact. Decodeer &, é en consorten terug naar hun tekens zodat de data schoon is voordat ze je eigen systemen binnenkomt.
Verifiëren dat de uitvoer van een encoder heen en terug klopt
Na het escapen van een tekenreeks met de encoder, decodeer je die hier om te bevestigen dat je het origineel ongewijzigd terugkrijgt. Een schone heen-en-terugcyclus bewijst dat je escaping correct en omkeerbaar is.
Een raadselachtige entiteit oplossen
Vastgelopen op wat ™ of … eigenlijk is? Plak het in en lees het gedecodeerde teken, of raadpleeg de ingebouwde snelreferentietabel — geen noodzaak de entiteitentabellen uit het hoofd te leren.
Verouderde opmaak veilig decoderen
Werk je met oude HTML die entiteiten zonder puntkomma als &copy of &nbsp inconsistent gebruikt? De soepele decoder herstelt de bedoelde tekens zoals een echte browser zou doen, zodat je opschoning overeenkomt met wat gebruikers daadwerkelijk zien.

Hoe de decoder werkt

Lost alle drie referentievormen op
De decoder matcht genoemde referenties tegen de volledige HTML5-tabel van genoemde tekens, parseert decimale referenties (&#NNN;) als codepunten in grondtal 10, en parseert hexadecimale referenties (&#xHHH;) als codepunten in grondtal 16. Elk lost op naar zijn Unicode-teken; de drie vormen zijn bij invoer uitwisselbaar.
Reconstructie van astrale tekens
Numerieke referenties met een codepunt boven U+FFFF — de meeste emoji en veel symbolen — worden omgezet naar het juiste surrogaatpaar zodat het teken als één glyph rendert. 😀 wordt 😀, niet twee kapotte halve tekens.
Soepele afhandeling van verouderde entiteiten
Een gedefinieerde subset van genoemde entiteiten verscheen historisch zonder afsluitende puntkomma, en browsers lossen ze nog steeds op. De decoder weerspiegelt dit gedrag — &copy 2026 levert © 2026 — passend bij de weergave van een echte browser in plaats van een strikte XML-parser.
Idempotent op platte tekst
Tekens die geen deel uitmaken van een herkende referentie, inclusief ruwe niet-ASCII-tekst die al in de invoer aanwezig is, gaan ongemoeid door. Een tekenreeks zonder entiteiten decoderen geeft die ongewijzigd terug, dus de bewerking is veilig om op gemengde inhoud te draaien.
Gedecodeerde uitvoer is ge-unescaped
Decoderen is de inverse van XSS-beschermend escapen, dus het resultaat is opnieuw actieve opmaak. De tool maakt dit zichtbaar zodat je geen gedecodeerde niet-vertrouwde tekst met innerHTML in een pagina invoegt — escape die opnieuw in zijn doelcontext voor het renderen.
Browser-lokaal, nul netwerk
Het decoderen draait synchroon in JavaScript op de hoofdthread; er is geen API-aanroep, geen server-retour en geen opslag. De invoer verlaat de pagina nooit, wat je kunt bevestigen door tijdens het typen naar een leeg Netwerk-paneel te kijken.

Best practices voor HTML unescapen

Render gedecodeerde niet-vertrouwde tekst nooit rechtstreeks
Gedecodeerde uitvoer is ge-unescapede opmaak. Kwam een deel ervan van een gebruiker of een externe bron, escape het dan opnieuw voordat je het in een pagina invoegt, of wijs het toe via textContent in plaats van innerHTML. Dit overslaan heropent het cross-site-scripting-gat dat escapen moest dichten.
Decodeer in omgekeerde volgorde van encoderen
Een waarde kan HTML-geëncodeerd, dan URL-geëncodeerd, dan Base64-geëncodeerd zijn. Maak de lagen ongedaan in de omgekeerde volgorde waarin ze toegepast werden — en gebruik de passende tool voor elk: deze voor entiteiten, de URL-decoder voor percent-encodering, de Base64-tool voor base64.
Decodeer één keer, niet reflexmatig
Als één decode-pass zichtbare entiteiten als < achterlaat, was de invoer dubbel-geëncodeerd — decodeer opnieuw om het origineel te herstellen, en herstel dan de stroomopwaartse pijplijn zodat tekst precies één keer geëscaped wordt. Loop niet blindelings; begrijp waarom de extra laag bestaat.
Serveer het resultaat als UTF-8
Het decoderen van numerieke referenties levert echte Unicode-tekens op — accenten, symbolen, emoji. Zorg dat de pagina, het bestand of het veld dat de gedecodeerde tekst ontvangt UTF-8 is, anders worden die herstelde tekens als mojibake weergegeven.
Verkies een geteste bibliotheek in applicatiecode
Voor losse conversies is deze tool ideaal; decodeer in productie met een goed geteste bibliotheek (he in Node, de eigen parser van de browser via een losse textarea) in plaats van een zelfgeschreven regex, die routinematig numerieke referenties, astrale tekens en verouderde entiteiten mist.

Veelgestelde vragen

Wordt mijn tekst naar jullie server gestuurd als ik die decodeer?
Nee. Elke entiteit wordt volledig in je browser met JavaScript opgelost — open DevTools → Netwerk en je ziet nul verzoeken afgaan wanneer je typt of plakt. Er wordt niets geüpload, niets gelogd, niets naar schijf geschreven. Die privacy is belangrijk omdat de geëscapede tekenreeksen die mensen decoderen vaak gevoelig zijn: een fragment uit een privédatabase, een interne e-mail, een klantgegeven of opmaak die uit een applicatie gekopieerd is die je niet wilt laten lekken. Bij een server-side decoder zou elk daarvan over het netwerk reizen naar een machine die je niet beheert; hier verlaat de tekst nooit het tabblad. Dit is de hele reden om HTML aan de clientzijde te decoderen in plaats van het in een website te plakken die in principe een kopie zou kunnen bewaren van alles wat het verwerkt.
Wat betekent HTML decoderen of unescapen?
HTML decoderen — ook wel unescapen genoemd — is het omgekeerde van HTML escapen: het neemt tekenreferenties als <, &, < of © en zet elk terug naar het echte teken waar het voor staat (<, &, <, ©). Je grijpt ernaar wanneer je een tekenreeks hebt die in geëscapede vorm opgeslagen of verzonden werd en je de letterlijke tekst terug nodig hebt — om die te lezen, te bewerken, aan een ander programma te voeren of te debuggen waarom een pagina &lt; op het scherm toont in plaats van <. Wil je de andere kant op en tekens in entiteiten omzetten, gebruik dan de bijbehorende HTML-entiteiten encoder; de twee zijn exacte inversen.
Welke soorten entiteiten kan deze decoder aan?
Alle drie vormen, in elke mix. Hij lost genoemde referenties op (<, &, ©, — en de volledige HTML5-set genoemde entiteiten), decimale numerieke referenties (<, é) en hexadecimale numerieke referenties (<, é). Hij reconstrueert ook astrale tekens boven U+FFFF uit hun numerieke referenties, zodat een emoji als 😀 correct decodeert naar 😀. En hij volgt de soepele parsing van de browser voor een handvol verouderde genoemde entiteiten die de afsluitende puntkomma weglaten — &copy 2026 decodeert nog steeds naar © 2026 — die strikte parsers zouden overslaan. Kortom, wat een encoder ook produceerde, deze decoder draait het om.
Waarom toont mijn tekst &lt; in plaats van
Dat is het klassieke symptoom van dubbele encodering. Ergens in je pijplijn werd de tekst twee keer geëscaped: de eerste keer veranderde < in <, en de tweede keer veranderde de & in < in &, wat &lt; opleverde. Wanneer de browser dat één keer decodeert, toont hij < als letterlijke tekst in plaats van <. Om het origineel te herstellen, decodeer je het twee keer — plak de tekenreeks hier om < te krijgen, en plak dat resultaat dan terug om < te krijgen. De echte oplossing zit stroomopwaarts: escape precies één keer, op het moment van uitvoer, zodat de tekst om te beginnen nooit dubbel geëncodeerd wordt.
Is de gedecodeerde uitvoer veilig om terug in een pagina te zetten?
Wees hier voorzichtig. Decoderen is het tegenovergestelde van escapen, dus gedecodeerde tekst is per definitie ge-unescaped — bevat die een <script>-tag of een onerror-handler, dan is die opmaak nu weer actief. Neem nooit niet-vertrouwde invoer, decodeer die en voeg het resultaat met innerHTML in je pagina in, want dan introduceer je opnieuw precies het cross-site-scripting-gat (XSS) dat escapen moest dichten. Decoderen is de juiste zet wanneer je de ruwe tekens nodig hebt om te lezen, bewerken of op te slaan; maar alles wat je terug in HTML rendert, moet in zijn doelcontext opnieuw geëscaped worden. Sta je op het punt het gedecodeerde resultaat weer te geven, haal het dan eerst opnieuw door de HTML-entiteiten encoder.
Verwerkt decoderen niet-ASCII-tekens en emoji correct?
Ja. Numerieke referenties kunnen elk Unicode-codepunt encoderen, en de decoder lost ze allemaal op — letters met accenten (é → é), symbolen (€ → €), kastlijnen (— → —) en emoji over het volledige bereik (😀 → 😀). Voor astrale tekens boven U+FFFF reconstrueert hij het volledige codepunt in plaats van een kapot half teken te produceren. Ruwe niet-ASCII-tekens die al in de invoer staan, gaan ongemoeid door, zodat een tekenreeks die echte UTF-8 met entiteiten mengt schoon decodeert zonder een van beide delen te beschadigen. Zorg dat de pagina of het bestand waar je het resultaat in plakt als UTF-8 geserveerd wordt, zodat de herstelde tekens correct weergegeven worden.
Hoe encodeer ik tekst terug naar entiteiten?
Gebruik de bijbehorende HTML-entiteiten encoder. Die neemt ruwe tekens als <div> & © en escapet ze naar <div> & ©, met opties voor genoemde, decimale of hex-uitvoer en een modus "alle niet-ASCII encoderen" voor verouderde tekensets. Encoderen en decoderen zijn exacte inversen voor de gereserveerde tekens, dus je kunt tekst zonder verlies door beide tools heen en weer halen. Je springt er direct heen met de knop Richting omwisselen op deze pagina.
Is dit hetzelfde als URL-decodering of Base64-decodering?
Nee — het zijn drie verschillende encoderingen voor drie verschillende taken, en ze door elkaar halen is een veelvoorkomende bron van fouten. HTML-entiteitendecodering zet < terug naar <. URL-decodering (percent) zet %20 terug naar een spatie en is voor querytekenreeksen en paden — gebruik daarvoor de URL-encoder/-decoder. Base64-decodering zet een base64-tekenreeks terug naar de oorspronkelijke bytes en is voor binair-veilig transport — gebruik Base64 encoderen/decoderen. Een waarde kan in meer dan een van deze verpakt zijn, dus decodeer ze in de omgekeerde volgorde waarin ze toegepast werden. Deze tool verwerkt alleen HTML-entiteiten.

Gerelateerde tools

Alle tools bekijken →