tigtools

HTML-entitetskoder / -afkoder

Gør tekst sikker at indsætte i HTML, eller omdan entiteter som & og é tilbage til almindelige tegn.

Kører i din browser Ingen tilmelding

Retning

& < > " og ' bliver altid erstattet af entiteter. Andre tegn konverteres kun, hvis du vælger en indstilling for ikke-ASCII-tegn.

Sådan bruger du det

  1. Vælg Kod for at gøre tekst sikker til HTML, eller Afkod for at omdanne entiteter tilbage til tegn.
  2. Når du koder, skal du vælge, om bogstaver med accenter og symboler skal forblive, som de er, eller blive til entiteter.
  3. Skriv eller indsæt din tekst; resultatet opdateres med det samme.
  4. Kopiér resultatet, eller brug »Brug output som input« for at kontrollere, at det afkodes tilbage til originalen.

Sådan fungerer det

I HTML har nogle få tegn en særlig betydning: < starter et tag, & starter en entitet, og " eller ' afslutter en attributværdi. For at vise dem som tekst skal de skrives som tegnreferencer: &lt; for <, &gt; for >, &amp; for &, &quot; for " og &#39; for '. Apostroffen bruger den numeriske form, fordi &apos; ikke er defineret i HTML 4.

Alle andre tegn, herunder bogstaver med accenter, kinesisk tekst og emoji, kan skrives direkte, når siden gemmes og udleveres som UTF-8, hvilket er standarden på moderne websites. At konvertere dem til entiteter er kun nødvendigt for systemer, der ikke er UTF-8-sikre, f.eks. nogle gamle e-mailskabeloner eller databaser. Du kan derefter vælge navngivne entiteter som &eacute;, hvor der findes et almindeligt navn (med numerisk fallback for alt andet), eller numeriske referencer som &#xE9; for hvert tegn.

Afkodning bruger ikke browserens HTML-parser. Den bruger en indbygget tabel med alle 252 navngivne entiteter fra HTML 4.01, &apos; og ca. 30 almindelige HTML5-navne samt decimal- og hexadecimale referencer. Numeriske referencer følger HTML5-reglerne: &#0;, surrogatværdier og værdier over U+10FFFF bliver til erstatningstegnet , og værdierne 128–159 læses som Windows-1252, så &#150; bliver en tankestreg. Et par ældre navne som &amp og &copy accepteres også uden det afsluttende semikolon, ligesom browsere gør. HTML5 definerer over 2.000 navne; sjældne uden for tabellen ændres ikke og vises i en liste.

At escape tekst, før den indsættes i HTML, er et vigtigt forsvar mod cross-site scripting (XSS), men det er kun korrekt for elementindhold og citerede attributværdier. Tekst placeret i en <script>-blok, en style-attribut eller en URL kræver anden escaping.

Eksempler

Visning af kode på en webside

For at vise <div class="box"> som tekst i et blogindlæg skal du kode det til &lt;div class=&quot;box&quot;&gt;. Browseren viser det oprindelige tag i stedet for at oprette et element.

Forberedelse af tekst til en gammel e-mailskabelon

Med „Navngivne entiteter, hvor de findes“ bliver „Café – 5 €“ til Caf&eacute; &ndash; 5 &euro;, hvilket vises korrekt, selvom e-mailen sendes med et tegnsæt, der ikke er UTF-8.

Rensning af skrabet eller eksporteret tekst

En CMS-eksport indeholder Fish &amp; Chips &#8211; &pound;9. Afkodning giver Fish & Chips – £9, klar til at indsætte i et regneark.

Ofte stillede spørgsmål

Hvilke tegn skal erstattes med entiteter i HTML?

I elementindhold skal & og < erstattes med entiteter (> anbefales også). Inde i attributværdier skal du også erstatte det anførselstegn, der omgiver værdien. At erstatte alle fem (& < > " ') overalt er den enkle, sikre regel, som dette værktøj følger.

Hvad er forskellen mellem navngivne og numeriske entiteter?

Navngivne entiteter som &copy; er lettere at læse, men findes kun for et begrænset sæt tegn. Numeriske referencer som &#169; (decimal) eller &#xA9; (hexadecimal) virker for alle Unicode-tegn, herunder emoji.

Hvorfor afkodes &nbsp; til noget, der ligner et mellemrum?

&nbsp; er et fast mellemrum (U+00A0). Det ligner et almindeligt mellemrum, men forhindrer linjeskift og bliver ikke kollapset af HTML. Det er et andet tegn end det almindelige mellemrum, hvilket har betydning, når du sammenligner eller søger i tekst.

Skal jeg kode bogstaver med accent som é?

Ikke hvis din side bruger UTF-8 (<meta charset="utf-8">), hvilket næsten alle moderne sider gør. Behold standardindstillingen, så erstattes kun de fem specialtegn.

Er kodning nok til at forhindre XSS?

Det er nok til upålidelig tekst, der indsættes i HTML-elementindhold eller i attributværdier med anførselstegn. Det er ikke nok til JavaScript-kode, CSS, attributter uden anførselstegn eller URL'er som href="javascript:…", som kræver kontekstspecifik håndtering.

Privatliv

Kodning og afkodning udføres med almindelige strengoperationer i din browser; din tekst bliver aldrig gengivet som HTML, uploadet, gemt eller inkluderet i analyseværktøjer.