UltKit

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.

Tryb
Styl encji
Zamieniaj

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.

ZnakNazwaneDziesiętneSzesnastkowe
&&&&
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;
(spacja niełamliwa)&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 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 (&#233;) lub szesnastkowym (&#xE9;). Odwołania nazwane łatwiej zapamiętać: HTML 4 zdefiniował ich 252, obejmują litery Latin-1, takie jak &eacute;, litery greckie, symbole matematyczne i znaki typograficzne, np. &mdash; i &hellip;. Co ciekawe, &apos; 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 &check;, &bigstar; i &NotEqualTilde; działają dziś w każdej aktualnej przeglądarce. W tej liczbie mieszczą się dawne zapisy bez końcowego średnika, np. &amp i &copy, 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 &apos;, 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ą &amp; 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ę &nbsp; od zwykłej spacji?
&nbsp; 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ć &amp; 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 &amp;, &lt;, &gt;, &quot; i &apos;.