UltKit

Kódování a dekódování HTML entit

Escapujte znaky, které HTML považuje za značky, volitelně i všechny znaky mimo ASCII, nebo převeďte entity jako é a — zpět na prostý text. Oba směry probíhají ve vašem prohlížeči a dekódovaný vstup se nikdy nevykreslí jako živé HTML.

Režim
Styl entit
Escapovat

0 znaků · 0 slov · 0 řádků

0 znaků · 0 slov · 0 řádků

Vše běží přímo v této záložce prohlížeče. Váš text se nikam nenahrává ani neukládá.

Běžné znaky a jejich entity

Pojmenovaný, desítkový i hexadecimální tvar se dekódují na stejný znak. Kodér zná 216 běžných pojmenovaných entit; dekodér rozumí všem pojmenovaným odkazům ze standardu HTML.

ZnakPojmenovanéDesítkovéHex
&&&&
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;
(nezlomitelná mezera)&nbsp;&#160;&#xA0;
©&copy;&#169;&#xA9;
®&reg;&#174;&#xAE;
™&trade;&#8482;&#x2122;
€&euro;&#8364;&#x20AC;
£&pound;&#163;&#xA3;
¥&yen;&#165;&#xA5;
—&mdash;&#8212;&#x2014;
–&ndash;&#8211;&#x2013;
…&hellip;&#8230;&#x2026;
«&laquo;&#171;&#xAB;
»&raquo;&#187;&#xBB;
°&deg;&#176;&#xB0;
×&times;&#215;&#xD7;
÷&divide;&#247;&#xF7;
é&eacute;&#233;&#xE9;
π&pi;&#960;&#x3C0;
→&rarr;&#8594;&#x2192;
😀—&#128512;&#x1F600;

Od 252 entit v HTML 4 ke 2 231 v HTML5

Znaková reference je způsob, jak zapsat znak pouze pomocí ASCII. Číselné reference fungují pro libovolný bod Unicode, v desítkové (&#233;) nebo šestnáctkové podobě (&#xE9;). Pojmenované reference se pamatují snáze: HTML 4 jich definovalo 252 a pokrývají písmena Latin-1 jako &eacute;, řecká písmena, matematické symboly a typografické znaky jako &mdash; a &hellip;. Kuriózně mezi nimi nebylo &apos;; pochází z XML a platným HTML se stalo až s HTML5.

HTML5 seznam rozšířilo na 2 231 pojmenovaných znakových referencí a pohltilo sadu entit MathML, takže názvy jako &check;, &bigstar; a &NotEqualTilde; dnes fungují ve všech aktuálních prohlížečích. Do počtu patří i zastaralé zápisy bez koncového středníku, například &amp a &copy, které parsery z důvodu kompatibility stále přijímají, ale které byste psát neměli. Zdejší kodér vytváří široce podporované názvy z HTML 4 plus &apos; a pro vše ostatní použije číselnou referenci; dekodér předává text vlastnímu parseru prohlížeče, takže rozumí všem 2 231 názvům.

Co escapovat a kdy samotné escapování nestačí

Pouze & < > " ' je nastavení pro běžnou práci: escapuje pět znaků, které mohou ukončit textový uzel nebo atribut v uvozovkách, což stačí k zobrazení ukázky kódu na stránce nebo k bezpečnému vložení uživatelského textu do HTML. Také každý znak mimo ASCII převede na reference i é, € a emoji, pro vzácné kanály, které neumějí přenášet UTF-8, například některé starší e-mailové šablony nebo systémy, které kódování kazí. Pojmenované, Desítkové a Šestnáctkové mění jen zápis reference; všechny tři se dekódují na stejný znak. Stránka uložená v UTF-8 nepotřebuje pro písmena s diakritikou žádné entity.

Escapování chrání pouze kontext HTML, nic víc. Text vkládaný do bloku skriptu, inline obsluhy události jako onclick, atributu style nebo href, který může začínat javascript:, vyžaduje jiné ošetření a samotné kódování entit tam před cross-site scriptingem nechrání. Frameworky jako React text escapují ve výchozím stavu, takže v moderních aplikacích je častější chybou dvojí escapování: uživatelé vidí &amp; tam, kde má být ampersand. Chcete-li značky odstranit úplně, převeďte kód pomocí HTML do TXT; pro escapování v URL použijte Kódování a dekódování URL.

Často kladené otázky

Které znaky je v HTML nutné escapovat?
V textu jsou zásadní & a <, znak > se escapuje podle konvence. V hodnotě atributu escapujte i uvozovku, která ji ohraničuje. Escapování všech pěti znaků pokryje oba případy.
Jaký je rozdíl mezi &nbsp; a běžnou mezerou?
&nbsp; je nezlomitelná mezera, U+00A0. Vypadá jako mezera, ale na daném místě brání zalomení řádku a na rozdíl od běžných mezer v HTML se při více za sebou nesloučí.
Proč se na mé stránce zobrazuje &amp; místo znaku ampersand?
Text byl escapován dvakrát: jednou ve vašich datech a podruhé šablonou nebo frameworkem. Ukládejte surový text a nechte escapování při výstupu provést jedinou vrstvu, obvykle šablonu.
Je bezpečné zde dekódovat HTML z nedůvěryhodného zdroje?
Ano. Dekodér zpracuje vstup jako prostý textový obsah, takže se nevytvářejí značky, neběží skripty a nenačítají se obrázky. Na znaky se převedou pouze entitní reference.
Jsou lepší pojmenované, nebo číselné entity?
Pojmenované se čtou snáze, číselné fungují pro každý znak a v každém parseru XML. V XML bez DTD jsou předdefinované jen &amp;, &lt;, &gt;, &quot; a &apos;.