tigtools

Kodér / dekodér HTML entit

Zabezpečte text pro vložení do HTML nebo převeďte entity jako & a é zpět na běžné znaky.

Běží ve vašem prohlížeči Bez registrace

Směr

& < > " a ' jsou vždy escapovány. Ostatní znaky se převedou, pouze pokud zvolíte možnost pro non-ASCII znaky.

Jak používat

  1. Zvolte Kódovat, aby byl text bezpečný pro HTML, nebo Dekódovat, aby se entity převedly zpět na znaky.
  2. Při kódování zvolte, zda mají písmena s diakritikou a symboly zůstat tak, jak jsou, nebo se převést na entity.
  3. Zadejte nebo vložte text; výsledek se okamžitě aktualizuje.
  4. Zkopírujte výsledek nebo použijte „Použít výstup jako vstup“ a ověřte, že se dekóduje zpět na původní text.

Jak to funguje

V HTML má několik znaků speciální význam: < zahajuje tag, & zahajuje entitu a " nebo ' ukončuje hodnotu atributu. Aby se zobrazily jako text, musí se zapsat jako znakové reference: &lt; pro <, &gt; pro >, &amp; pro &, &quot; pro " a &#39; pro '. Apostrof používá číselnou podobu, protože &apos; není v HTML 4 definován.

Všechny ostatní znaky, včetně písmen s diakritikou, čínského textu a emoji, lze zapisovat přímo, pokud je stránka uložena a poskytována jako UTF-8, což je u moderních webů výchozí nastavení. Převod na entity je nutný jen u systémů, které nejsou bezpečné pro UTF-8, jako jsou některé starší e-mailové šablony nebo databáze. Můžete pak zvolit pojmenované entity, jako je &eacute;, pokud běžný název existuje (se záložním číselným zápisem pro vše ostatní), nebo číselné reference, jako je &#xE9;, pro každý znak.

Dekódování nepoužívá HTML parser prohlížeče. Využívá vestavěnou tabulku se všemi 252 pojmenovanými entitami z HTML 4.01, &apos; a přibližně 30 běžnými názvy z HTML5, plus desítkové a šestnáctkové reference. Číselné reference se řídí pravidly HTML5: &#0;, náhradní hodnoty a hodnoty nad U+10FFFF se změní na náhradní znak a hodnoty 128–159 se čtou jako Windows-1252, takže z &#150; vznikne pomlčka. Několik starších názvů, jako jsou &amp a &copy, je také přijímáno bez závěrečného středníku, stejně jako v prohlížečích. HTML5 definuje více než 2 000 názvů; vzácné názvy mimo tabulku zůstávají beze změny a jsou uvedeny v seznamu.

Escapování textu před vložením do HTML je důležitou obranou proti cross-site scriptingu (XSS), ale je správné pouze pro obsah prvků a hodnoty atributů v uvozovkách. Text umístěný do bloku <script>, atributu style nebo do adresy URL vyžaduje jiný způsob escapování.

Příklady

Zobrazení kódu na webové stránce

Chcete-li v blogovém příspěvku zobrazit <div class="box"> jako text, zakódujte jej na &lt;div class=&quot;box&quot;&gt;. Prohlížeč zobrazí původní tag místo vytvoření prvku.

Příprava textu pro starou e-mailovou šablonu

S volbou „Pojmenované entity, kde jsou k dispozici“ se z „Café – 5 €“ stane Caf&eacute; &ndash; 5 &euro;, což se zobrazí správně, i když je e-mail odeslán s jinou znakovou sadou než UTF-8.

Čištění scrapovaného nebo exportovaného textu

Export z CMS obsahuje Fish &amp; Chips &#8211; &pound;9. Po dekódování získáte Fish & Chips – £9, připravené k vložení do tabulky.

Časté dotazy

Které znaky je nutné v HTML escapovat?

V obsahu elementů je nutné escapovat & a < (doporučuje se i >). Uvnitř hodnot atributů escapujte také uvozovku, která hodnotu ohraničuje. Jednoduché a bezpečné pravidlo, kterým se tento nástroj řídí, je escapovat všech pět znaků (& < > " ') všude.

Jaký je rozdíl mezi pojmenovanými a číselnými entitami?

Pojmenované entity jako &copy; se lépe čtou, ale existují jen pro omezenou sadu znaků. Číselné reference jako &#169; (desítkově) nebo &#xA9; (šestnáctkově) fungují pro každý znak Unicode, včetně emoji.

Proč se &nbsp; dekóduje na něco, co vypadá jako mezera?

&nbsp; je nedělitelná mezera (U+00A0). Vypadá jako běžná mezera, ale zabraňuje zalomení řádku a prohlížeč ji neslučuje. Jde o jiný znak než obyčejná mezera, což je důležité při porovnávání nebo vyhledávání textu.

Je nutné kódovat písmena s diakritikou, jako je é?

Ne, pokud vaše stránka používá UTF-8 (<meta charset="utf-8">), což dnes dělá téměř každá moderní stránka. Ponechte výchozí nastavení a escapuje se pouze pět speciálních znaků.

Stačí kódování k prevenci XSS?

To stačí pro nedůvěryhodný text vkládaný do obsahu HTML elementu nebo do hodnot atributů v uvozovkách. Nestačí to pro kód JavaScript, CSS, atributy bez uvozovek ani adresy URL jako href="javascript:…", které vyžadují ošetření podle kontextu.

Soukromí

Kódování a dekódování probíhá pomocí běžných řetězcových operací ve vašem prohlížeči; váš text se nikdy nevykresluje jako HTML, nenahrává se, neukládá se ani se nezahrnuje do analytiky.