Skip to main content

Konwertuj znaki specjalne na encje HTML i z powrotem.

Wszystkie obliczenia wykonywane są lokalnie w przeglądarce. Dane nie są wysyłane na serwer.

Wyniki mają charakter informacyjny. Potwierdź je w innych źródłach.

Zamień ampersand na końcu, a zepsujesz każdą encję, którą właśnie zapisałeś

Escapowanie HTML ma pięć znaków i jedną regułę kolejności. Ampersand musi iść pierwszy, bo każde kolejne podstawienie wprowadza nowe ampersandy. Zamień go na końcu, a < stanie się < — strona wyświetli tekst encji zamiast znaku, a błąd będzie wyglądał na popsuty szablon, a nie na pomyłkę w kolejności.

Jak to działa

  • Zamienia znaki niosące znaczenie w HTML na ich postacie encji i z powrotem.
  • Stosuje podstawienia w kolejności, która unika podwójnego escapowania.
  • Obejmuje pięć predefiniowanych encji oraz odwołania liczbowe do wszystkiego pozostałego.
&  →  &      MUSI być podstawiony pierwszy
<  →  &lt;
>  →  &gt;
"  →  &quot;
'  →  &#39;

wszystko inne:  &#DZIESIĘTNIE;  albo  &#xSZESNASTKOWO;

Przykład z liczbami

Ciąg <b>a & b</b> zescapowany poprawnie, a potem z ampersandem obsłużonym na końcu.

  1. poprawna kolejność → &lt;b&gt;a &amp; b&lt;/b&gt;
  2. ampersand na końcu → &amp;lt;b&amp;gt;a &amp; b&amp;lt;/b&amp;gt;
  3. każda encja z wcześniejszych kroków została zescapowana ponownie
  4. przeglądarka wyświetla potem na stronie dosłowny tekst &lt;b&gt;

Jedna przestawiona linia zamienia działające wyjście w widoczne kody encji. Pięć podstawień z osobna jest banalne; jedyne, co może pójść nie tak, to wykonanie ich w złej kolejności.

Jak czytać wynik

  • Escapowanie zależy od kontekstu, a to obejmuje jeden kontekst. Wartość bezpieczna w tekście elementu nie jest automatycznie bezpieczna w atrybucie, w adresie URL, wewnątrz bloku skryptu ani w CSS — każde z tych miejsc wymaga własnego escapowania zastosowanego tam, gdzie jest używane.
  • &apos; jest zdefiniowane w XML, ale nie było w HTML 4, i dlatego &#39; to bezpieczniejsza postać liczbowa apostrofu w wyjściu HTML, które może trafić do starszych parserów.
  • Wartości atrybutów wymagają szczególnie escapowania cudzysłowów. Niezescapowany cudzysłów wewnątrz atrybutu w cudzysłowach kończy atrybut przedwcześnie, a to mechanizm stojący za sporą częścią wstrzyknięć przez szablony.
  • Escapowanie to nie sanityzacja. Czyni znaczniki bezwładnymi, wyświetlając je jako tekst; nie rozstrzyga, czy treść w ogóle była dopuszczalna, a system, który musi przepuścić trochę HTML, potrzebuje parsera i listy dozwolonych, a nie escapera.

Częste pytania

Dlaczego moja strona pokazuje &lt;b&gt; jako tekst?
Treść została zescapowana dwukrotnie, najczęściej dlatego, że reguła ampersanda zadziałała po pozostałych, albo dlatego, że wartość zescapowaną wcześniej szablon zescapował ponownie. Znajdź warstwę robiącą to nadmiarowo, zamiast odkodowywać na końcu.
Czy trzeba escapować wszystkie pięć znaków?
W tekście elementu minimum to ampersand i nawiasy ostrokątne. Wewnątrz wartości atrybutów potrzebne są też znaki cudzysłowu, a ponieważ escapery rzadko wiedzą, do jakiego kontekstu trafiają, obsłużenie wszystkich pięciu jest bezpiecznym domyślnym wyborem.