Koder i dekoder encji HTML
Zamień na encje znaki, które HTML traktuje jako znaczniki, a jeśli chcesz, także wszystkie znaki spoza ASCII. Możesz też przywrócić encje takie jak é czy — do zwykłego tekstu. Oba kierunki działają w przeglądarce, a zdekodowane dane nigdy nie są renderowane jako aktywny kod HTML.
Znaki: 0 · słowa: 0 · wiersze: 0
Znaki: 0 · słowa: 0 · wiersze: 0
Działa w całości w tej karcie przeglądarki. Twój tekst nie jest wysyłany ani zapisywany.
Typowe znaki i ich encje
Formy nazwane, dziesiętne i szesnastkowe dekodują się do tego samego znaku. Koder zna 216 typowych encji nazwanych; dekoder rozumie każde odwołanie nazwane ze standardu HTML.
| Znak | Nazwane | Dziesiętne | Szesnastkowe |
|---|---|---|---|
& | & | & | & |
< | < | < | < |
> | > | > | > |
" | " | " | " |
' | ' | ' | ' |
(spacja niełamliwa) | |   |   |
© | © | © | © |
® | ® | ® | ® |
™ | ™ | ™ | ™ |
€ | € | € | € |
£ | £ | £ | £ |
¥ | ¥ | ¥ | ¥ |
— | — | — | — |
– | – | – | – |
… | … | … | … |
« | « | « | « |
» | » | » | » |
° | ° | ° | ° |
× | × | × | × |
÷ | ÷ | ÷ | ÷ |
é | é | é | é |
π | π | π | π |
→ | → | → | → |
😀 | — | 😀 | 😀 |
Od 252 encji w HTML 4 do 2231 w HTML5
Odwołanie do znaku (ang. character reference) pozwala zapisać dowolny znak przy użyciu samego ASCII. Odwołania numeryczne działają dla każdego punktu kodowego Unicode, w zapisie dziesiętnym (é) lub szesnastkowym (é). Odwołania nazwane łatwiej zapamiętać: HTML 4 zdefiniował ich 252, obejmują litery Latin-1, takie jak é, litery greckie, symbole matematyczne i znaki typograficzne, np. — i …. Co ciekawe, ' nie było wśród nich; pochodzi z XML i stało się poprawne w HTML dopiero wraz z HTML5.
HTML5 rozszerzył listę do 2231 nazwanych odwołań do znaków, włączając zestaw encji MathML, więc nazwy takie jak ✓, ★ i ≂̸ działają dziś w każdej aktualnej przeglądarce. W tej liczbie mieszczą się dawne zapisy bez końcowego średnika, np. & i ©, które parsery nadal akceptują dla zgodności, ale których nie należy pisać. Koder w tym narzędziu tworzy powszechnie obsługiwane nazwy z HTML 4 oraz ', a dla wszystkich pozostałych znaków używa odwołania numerycznego; dekoder przekazuje tekst do wbudowanego parsera przeglądarki, więc rozumie wszystkie 2231 nazw.
Co escapować i kiedy escapowanie nie wystarcza
Tylko & < > " ' to ustawienie do codziennej pracy: zamienia pięć znaków, które mogą zakończyć węzeł tekstowy lub atrybut w cudzysłowie, co wystarcza, aby pokazać na stronie przykład kodu albo bezpiecznie umieścić tekst użytkownika w HTML. Także każdy znak spoza ASCII zamienia na odwołania również é, € i emoji, na użytek rzadkich kanałów, które nie obsługują UTF-8, jak niektóre starsze szablony e-mail lub systemy psujące kodowanie. Nazwane, Dziesiętne i Szesnastkowe zmieniają tylko sposób zapisu odwołania; wszystkie trzy dekodują się do tego samego znaku. Strona zapisana w UTF-8 nie wymaga encji dla liter z akcentami.
Escapowanie chroni wyłącznie kontekst HTML. Tekst wstawiany do bloku script, do inline'owej obsługi zdarzeń, takiej jak onclick, do atrybutu style lub do href, który może zaczynać się od javascript:, wymaga innego traktowania, a sama zamiana na encje nie chroni tam przed cross-site scripting. Frameworki takie jak React domyślnie escapują tekst, dlatego w nowoczesnych aplikacjach częstszym błędem jest podwójne escapowanie: użytkownicy widzą & tam, gdzie powinien być znak &. Aby całkiem usunąć znaczniki, przekonwertuj kod za pomocą HTML na TXT; do escapowania w adresach URL użyj kodowania i dekodowania URL.
Najczęściej zadawane pytania
- Które znaki trzeba escapować w HTML?
- W tekście niezbędne są & i <, a > escapuje się z przyzwyczajenia. W wartości atrybutu trzeba dodatkowo zamienić znak cudzysłowu, który ją ogranicza. Zamiana wszystkich pięciu obejmuje oba przypadki.
- Czym różni się od zwykłej spacji?
to spacja niełamliwa, U+00A0. Wygląda jak spacja, ale zapobiega złamaniu wiersza w tym miejscu i w przeciwieństwie do zwykłych spacji w HTML nie jest zwijana, gdy występuje kilka obok siebie.- Dlaczego na mojej stronie widać & zamiast znaku „&”?
- Tekst został zescapowany dwa razy: raz w danych, a drugi raz przez szablon lub framework. Przechowuj surowy tekst i pozwól, by escapowaniem przy wyświetlaniu zajmowała się jedna warstwa, zwykle szablon.
- Czy można tu bezpiecznie dekodować HTML z niezaufanego źródła?
- Tak. Dekoder traktuje dane wejściowe jako zwykły tekst, więc znaczniki nie powstają, skrypty się nie uruchamiają, a obrazy nie są ładowane. Na znaki zamieniane są tylko odwołania do encji.
- Co jest lepsze: encje nazwane czy numeryczne?
- Nazwane są czytelniejsze, a numeryczne działają dla każdego znaku i w każdym parserze XML. W XML bez DTD predefiniowane są tylko
&,<,>,"i'.