Jak używać
- Wybierz „Koduj”, aby przygotować tekst do użycia w HTML, lub „Dekoduj”, aby zamienić encje z powrotem na znaki.
- Podczas kodowania wybierz, czy znaki diakrytyczne i symbole mają pozostać bez zmian, czy zostać zamienione na encje.
- Wpisz lub wklej tekst — wynik zaktualizuje się od razu.
- 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: < dla <, > dla >, & dla &, " dla " i ' dla '. Apostrof zapisuje się w postaci numerycznej, ponieważ ' 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. é, jeśli istnieje odpowiednia nazwa (a dla pozostałych znaków użyć postaci numerycznej), albo numeryczne odwołania, takie jak é, 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, ' 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: �, 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 – staje się półpauzą. Podobnie jak przeglądarki, narzędzie akceptuje też kilka starszych nazw, takich jak & i ©, 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 <div class="box">. 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é – 5 €, 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 & Chips – £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 ©, są łatwiejsze do odczytania, ale istnieją tylko dla ograniczonego zestawu znaków. Odwołania numeryczne, takie jak © (dziesiętne) lub © (szesnastkowe), działają dla każdego znaku Unicode, w tym emoji.
Dlaczego po dekodowaniu wygląda jak spacja?
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.