Kodowanie

HTML Entities Encode/Decode

Kodowanie i dekodowanie encji HTML — bezpieczne wyświetlanie znaków specjalnych na stronie.

HTML entities are a way to write characters that would otherwise break markup (<, >, &) or have no keyboard key, as safe text sequences like &lt; or &amp;. This tool encodes and decodes such entities right in your browser.

How to use it

Common uses

Things to keep in mind

HTML entity escaping only protects against XSS via a page's text content — it does not protect a JavaScript context (innerHTML, eval) or href/src attributes containing unvalidated URLs.

Encode exactly at the point where text gets inserted into HTML, not ahead of time when saving to a database — otherwise the data gets mangled when reused outside an HTML context.

Artykuł o tym narzędziu: HTML Entities: jak bezpiecznie wyświetlać znaki specjalne

Najczęstsze pytania

Czym są encje HTML i po co je stosować?

Encje HTML to zapis znaków specjalnych, które w kodzie HTML mają znaczenie strukturalne (np. < czy &), tak aby przeglądarka wyświetliła je jako zwykły tekst zamiast interpretować jako znacznik.

Jaka jest różnica między encjami nazwanymi a liczbowymi?

Encja nazwana, np. &amp;, jest czytelna dla człowieka i obejmuje ograniczony zestaw znaków zdefiniowany w specyfikacji HTML. Encja liczbowa, np. &#38; lub &#x26;, odwołuje się bezpośrednio do punktu kodowego Unicode i działa dla dowolnego znaku, niezależnie od tego, czy ma nazwaną wersję.

Czym różnią się tryby Podstawowe i Wszystkie znaki?

Tryb Podstawowe koduje tylko znaki istotne dla struktury HTML (jak <, >, & i cudzysłowy), natomiast tryb Wszystkie znaki zamienia na encje również znaki spoza ASCII, co bywa przydatne przy pracy ze starszymi systemami lub ograniczonym kodowaniem znaków.

Czy tekst w atrybucie trzeba escapować inaczej niż w treści strony?

Podstawowe znaki (<, >, &) escapuje się tak samo, ale wewnątrz atrybutu w cudzysłowie kluczowe jest dodatkowe escapowanie dokładnie tego typu cudzysłowu, którym ograniczony jest atrybut — inaczej wartość „urwie się" wcześniej niż oczekiwano.

Czy escapowanie HTML chroni przed wszystkimi rodzajami XSS?

Nie. Zamyka ono najpopularniejszy wektor — wstawianie tekstu do treści HTML, ale nie chroni przed XSS przez kontekst JavaScript (np. innerHTML z późniejszym wykonaniem kodu) czy niezwalidowane adresy URL w href/src.

Artykuły: Kodowanie

Base64: po co jest kodowanie i jak działa

Jak Base64 zamienia dane binarne na tekst ASCII i kiedy naprawdę jest to potrzebne.

Base32: czym różni się od Base64 i kiedy jest wygodniejszy

Alfabet Base32 niewrażliwy na wielkość liter i sytuacje, w których jest wygodniejszy od Base64.

URL Encode/Decode: percent-encoding w linkach

Jak znaki specjalne w adresach i parametrach zamieniają się w sekwencje %XX.

JWT: budowa tokenu i co znaczy „dekodowanie" JWT

Header, payload i signature tokenu JWT oraz dlaczego dekodowanie to nie to samo co weryfikacja podpisu.

Unicode Escape: co oznaczają sekwencje \uXXXX

Skąd biorą się sekwencje takie jak \u0041 w JSON i ciągach JS oraz co oznaczają.

ROT13 i szyfr Cezara: proste podstawianie znaków

Dlaczego przesunięcie o 13 liter sprawia, że ROT13 jest samoodwrotny, i po co się go dziś używa.

Punycode: jak umiędzynarodowione domeny działają w DNS

Jak domena z niełacińskimi znakami zamienia się w formę ASCII z prefiksem xn--.

Alfabet Morse'a: jak tekst zamienia się w kropki i kreski

Zasada kodowania liter jako kropek i kresek oraz gdzie alfabet Morse'a jest dziś stosowany.

Data URI: kiedy osadzać obrazy bezpośrednio w kodzie

Jak Data URI osadza zawartość pliku bezpośrednio w HTML lub CSS i kiedy się to opłaca.

Gzip + Base64: kompresja danych do przesyłania jako tekst

Dlaczego skompresowane dane binarne dodatkowo koduje się w Base64, zanim trafią do pola tekstowego.

XML Entities: escapowanie znaków w dokumentach XML

Pięć obowiązkowych encji XML, bez których dokument psuje się podczas parsowania.