Wszystkie poradniki

Dlaczego tekst pokazuje „&” i jak to naprawić

Opublikowano · Zaktualizowano 2 min czytania

Zapewne zdarzyło się zobaczyć tekst pokazujący „Tom & Jerry” zamiast „Tom & Jerry” na stronie, w e-mailu lub na karcie produktu. To nie awaria: encja HTML została zakodowana raz za dużo. Ten przewodnik wyjaśnia, skąd bierze się problem i jak go naprawić.

Czym jest encja HTML

W kodzie strony internetowej niektóre znaki pełnią szczególną rolę: „&” rozpoczyna encję, znaki „<” i „>” otaczają znaczniki. Aby wyświetlić te znaki w niezmienionej postaci, zastępuje się je ciągiem znaków zwanym encją. Pięć jest popularnych.

ZnakEncja
&&amp;
<&lt;
>&gt;
"&quot;
' (prosty apostrof)&#039;

Skąd bierze się podwójne kodowanie

Tekst czasem przechodzi przez dwa systemy, z których każdy koduje: edytor, a potem szablon strony. Każde przejście przekształca „&” poprzedniej encji. Za pomocą Koduj i dekoduj encje HTML zakodowanie „Tom & Jerry” daje „Tom &amp; Jerry”, a zakodowanie tego wyniku daje „Tom &amp;amp; Jerry”.

KrokUzyskany tekst
Tekst oryginalnyTom & Jerry
Zakodowany razTom &amp; Jerry
Zakodowany dwa razyTom &amp;amp; Jerry

Przeglądarka dekoduje jeden poziom przy wyświetlaniu. Tekst zakodowany dwa razy pojawia się więc z „&amp;” zamiast „&”.

Dekodowanie jednego poziomu naraz

Narzędzie usuwa jeden poziom encji na jedno przejście. Jeśli wynik nadal zawiera encje, tryb „Oba” to sygnalizuje i dekodowanie uruchamia się ponownie na wyniku.

TekstPierwsze dekodowanieDrugie dekodowanie
Tom &amp;amp; JerryTom &amp; JerryTom & Jerry
&amp;lt;b&amp;gt;gras&amp;lt;/b&amp;gt;&lt;b&gt;gras&lt;/b&gt;<b>gras</b>

Dekodowanie jednego poziomu pozwala nie cofnąć zamierzonego kodowania: przykład kodu, który ma pokazywać „&amp;” na ekranie, zapisuje się w stronie jako „&amp;amp;”.

Akcenty i symbole

Dekodowanie rozumie wszystkie encje nazwane kończące się średnikiem, nie tylko pięć zwykłych. „caf&eacute; &agrave; 5&nbsp;&euro; &copy; 2026” daje „café à 5 € © 2026”, a twarda spacja staje się prawdziwą twardą spacją. Encje liczbowe też są dekodowane: „&#233;t&#xE9;” daje „été”, a „&#x1F600;” jak „&#128512;” dają to samo emoji.

Co narzędzie pozostawia nienaruszone

  • Nieznana encja, jak „&inconnue;”, pozostaje bez zmian.
  • Encja bez końcowego średnika, jak „&amp” lub „&lt” w zdaniu, nie jest ruszana.
  • Adres z parametrami, jak „https://exemple.fr/?a=1&param=2&copy=4”, pozostaje dokładny: „&param” i „&copy” nie są tam brane za encje.

Kodowanie kodu, aby go pokazać

Aby pokazać fragment kodu na stronie, zakoduj go raz. Tekst „<a href="x">l’été & plus</a>” daje „&lt;a href=&quot;x&quot;&gt;l&#039;été &amp; plus&lt;/a&gt;”. Litery z akcentami nie są kodowane, tylko pięć znaków zastrzeżonych.

Unikanie problemu

Koduj tylko raz, w ostatniej chwili, gdy tekst jest zapisywany w stronie. Do hurtowej zamiany pozostałości po złym kodowaniu nadaje się Znajdź i zamień. Adresy internetowe podlegają innemu kodowaniu, wyjaśnionemu w Base64, hash i zakodowany adres, czym się różnią.

Gdzie pojawia się problem

Na karcie produktu, w tytule strony, w automatycznym e-mailu lub w polu zaimportowanym z innej strony: „&” staje się „&amp;”, gdy tekst jest kodowany dwa razy.

Sprawdzenie wyniku

  1. Uruchamiaj dekodowanie ponownie, dopóki narzędzie sygnalizuje pozostałe encje.
  2. Porównaj z tekstem oryginalnym na ekranie.
  3. Sprawdź twarde spacje i emoji.

Encje HTML

Najczęściej zadawane pytania

Dlaczego mój tekst pokazuje „&amp;”?
Encja HTML została zakodowana raz za dużo. Przeglądarka dekoduje jeden poziom przy wyświetlaniu, drugi pozostaje widoczny.
Jak to naprawić?
Dekoduj jeden poziom naraz za pomocą narzędzia, aż przestanie sygnalizować encje.
Czy narzędzie dekoduje akcenty?
Tak, wszystkie encje nazwane kończące się średnikiem oraz encje liczbowe.
Jak uniknąć problemu?
Koduj tylko raz, w ostatniej chwili, gdy tekst jest zapisywany w stronie.