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.
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.
| Znak | Pojmenované | Desítkové | Hex |
|---|---|---|---|
& | & | & | & |
< | < | < | < |
> | > | > | > |
" | " | " | " |
' | ' | ' | ' |
(nezlomitelná mezera) | |   |   |
© | © | © | © |
® | ® | ® | ® |
™ | ™ | ™ | ™ |
€ | € | € | € |
£ | £ | £ | £ |
¥ | ¥ | ¥ | ¥ |
— | — | — | — |
– | – | – | – |
… | … | … | … |
« | « | « | « |
» | » | » | » |
° | ° | ° | ° |
× | × | × | × |
÷ | ÷ | ÷ | ÷ |
é | é | é | é |
π | π | π | π |
→ | → | → | → |
😀 | — | 😀 | 😀 |
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é (é) nebo šestnáctkové podobě (é). Pojmenované reference se pamatují snáze: HTML 4 jich definovalo 252 a pokrývají písmena Latin-1 jako é, řecká písmena, matematické symboly a typografické znaky jako — a …. Kuriózně mezi nimi nebylo '; 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 ✓, ★ a ≂̸ 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 & a ©, 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 ' 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í & 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 a běžnou mezerou?
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 & 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
&,<,>,"a'.