tigtools

Koder / dekoder encji HTML

Przygotuj tekst do umieszczenia w HTML lub zamień encje, takie jak & i é, z powrotem na zwykłe znaki.

Działa w przeglądarce Bez rejestracji

Kierunek

Znaki & < > " i ' są zawsze zamieniane na encje. Pozostałe znaki są konwertowane tylko po wybraniu opcji dla znaków spoza ASCII.

Jak używać

  1. Wybierz „Koduj”, aby przygotować tekst do użycia w HTML, lub „Dekoduj”, aby zamienić encje z powrotem na znaki.
  2. Podczas kodowania wybierz, czy znaki diakrytyczne i symbole mają pozostać bez zmian, czy zostać zamienione na encje.
  3. Wpisz lub wklej tekst — wynik zaktualizuje się od razu.
  4. Skopiuj wynik lub wybierz „Użyj wyniku jako danych wejściowych”, aby sprawdzić, czy po dekodowaniu otrzymasz tekst oryginalny.

Jak to działa

W HTML niektóre znaki mają specjalne znaczenie: < rozpoczyna tag, & rozpoczyna encję, a " lub ' kończy wartość atrybutu. Aby wyświetlić je jako tekst, trzeba zapisać je jako odwołania do znaków: &lt; dla <, &gt; dla >, &amp; dla &, &quot; dla " i &#39; dla '. Apostrof zapisuje się w postaci numerycznej, ponieważ &apos; nie jest zdefiniowane w HTML 4.

Wszystkie pozostałe znaki, w tym litery diakrytyczne, tekst chiński i emoji, można zapisywać bezpośrednio, jeśli strona jest zapisana i udostępniana w UTF-8, domyślnym kodowaniu nowoczesnych witryn. Zamiana na encje jest potrzebna tylko w systemach, które nie obsługują poprawnie UTF-8, takich jak niektóre stare szablony e-maili lub bazy danych. Możesz wtedy wybrać encje nazwane, np. &eacute;, jeśli istnieje odpowiednia nazwa (a dla pozostałych znaków użyć postaci numerycznej), albo numeryczne odwołania, takie jak &#xE9;, dla każdego znaku.

Dekodowanie nie korzysta z parsera HTML przeglądarki. Zamiast tego używa wbudowanej tabeli obejmującej wszystkie 252 nazwane encje z HTML 4.01, &apos; i około 30 popularnych nazw z HTML5, a także odwołania dziesiętne i szesnastkowe. Numeryczne odwołania są przetwarzane zgodnie z zasadami HTML5: &#0;, wartości surogatów i wartości powyżej U+10FFFF są zamieniane na znak zastępczy �, a wartości 128–159 są interpretowane jako Windows-1252, dlatego &#150; staje się półpauzą. Podobnie jak przeglądarki, narzędzie akceptuje też kilka starszych nazw, takich jak &amp i &copy, bez końcowego średnika. HTML5 definiuje ponad 2000 nazw; rzadkie nazwy spoza tabeli pozostają bez zmian i są wymieniane na liście.

Escapowanie tekstu przed wstawieniem go do HTML jest ważnym zabezpieczeniem przed atakami typu cross-site scripting (XSS), ale jest właściwe tylko w przypadku treści elementów i wartości atrybutów ujętych w cudzysłów. Tekst umieszczony w bloku <script>, atrybucie style lub URL-u wymaga innego sposobu escapowania.

Przykłady

Wyświetlanie kodu na stronie internetowej

Aby wyświetlić w poście na blogu zapis <div class="box"> jako tekst, zakoduj go jako &lt;div class=&quot;box&quot;&gt;. Przeglądarka pokaże oryginalny tag zamiast tworzyć element.

Przygotowanie tekstu do starego szablonu e-maila

Przy ustawieniu „Nazwane encje, jeśli są dostępne” tekst „Café – 5 €” zmienia się w Caf&eacute; &ndash; 5 &euro;, co zapewnia prawidłowe wyświetlanie nawet wtedy, gdy e-mail jest wysyłany w kodowaniu innym niż UTF-8.

Porządkowanie pobranego lub wyeksportowanego tekstu

Eksport z CMS zawiera Fish &amp; Chips &#8211; &pound;9. Po dekodowaniu otrzymujemy Fish & Chips – £9, gotowe do wklejenia do arkusza kalkulacyjnego.

Często zadawane pytania

Które znaki trzeba zamieniać na encje w HTML?

W treści elementów trzeba zamienić & i < na encje (zalecamy też zamianę >). Wartości atrybutów również wymagają zamiany znaku cudzysłowu, który je otacza. Najprostsza bezpieczna zasada, której przestrzega to narzędzie, to zamiana wszystkich pięciu znaków (& < > " ') w każdym miejscu.

Czym różnią się encje nazwane od numerycznych?

Nazwane encje, takie jak &copy;, są łatwiejsze do odczytania, ale istnieją tylko dla ograniczonego zestawu znaków. Odwołania numeryczne, takie jak &#169; (dziesiętne) lub &#xA9; (szesnastkowe), działają dla każdego znaku Unicode, w tym emoji.

Dlaczego &nbsp; po dekodowaniu wygląda jak spacja?

&nbsp; to twarda spacja (U+00A0). Wygląda jak zwykła spacja, ale zapobiega podziałowi wiersza i nie jest zwijana przez HTML. To inny znak niż zwykła spacja, co ma znaczenie przy porównywaniu i wyszukiwaniu tekstu.

Czy muszę kodować znaki diakrytyczne, takie jak é?

Nie, jeśli strona używa UTF-8 (<meta charset="utf-8">), a tak jest w przypadku niemal wszystkich nowoczesnych stron. Pozostaw ustawienie domyślne — zamieniane będzie tylko pięć znaków specjalnych.

Czy kodowanie wystarczy, aby zapobiec XSS?

Wystarcza to w przypadku niezaufanego tekstu wstawianego do treści elementu HTML lub ujętej w cudzysłów wartości atrybutu. Nie wystarcza w przypadku kodu JavaScript, CSS, atrybutów bez cudzysłowów ani adresów URL, takich jak href="javascript:…" — wymagają one obsługi odpowiedniej dla danego kontekstu.

Prywatność

Kodowanie i dekodowanie odbywa się w przeglądarce za pomocą operacji na ciągach znaków. Tekst nie jest renderowany jako HTML, przesyłany, zapisywany ani uwzględniany w statystykach.