Jak používat
- Zvolte Kódovat, aby byl text bezpečný pro HTML, nebo Dekódovat, aby se entity převedly zpět na znaky.
- 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.
- Zadejte nebo vložte text; výsledek se okamžitě aktualizuje.
- 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: < pro <, > pro >, & pro &, " pro " a ' pro '. Apostrof používá číselnou podobu, protože ' 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 é, pokud běžný název existuje (se záložním číselným zápisem pro vše ostatní), nebo číselné reference, jako je é, 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, ' 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: �, 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 – vznikne pomlčka. Několik starších názvů, jako jsou & a ©, 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 <div class="box">. 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é – 5 €, 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 & Chips – £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 © se lépe čtou, ale existují jen pro omezenou sadu znaků. Číselné reference jako © (desítkově) nebo © (šestnáctkově) fungují pro každý znak Unicode, včetně emoji.
Proč se dekóduje na něco, co vypadá jako mezera?
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.