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.
| Znak | Encja |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| ' (prosty apostrof) | ' |
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 & Jerry”, a zakodowanie tego wyniku daje „Tom &amp; Jerry”.
| Krok | Uzyskany tekst |
|---|---|
| Tekst oryginalny | Tom & Jerry |
| Zakodowany raz | Tom & Jerry |
| Zakodowany dwa razy | Tom &amp; Jerry |
Przeglądarka dekoduje jeden poziom przy wyświetlaniu. Tekst zakodowany dwa razy pojawia się więc z „&” 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.
| Tekst | Pierwsze dekodowanie | Drugie dekodowanie |
|---|---|---|
| Tom &amp; Jerry | Tom & Jerry | Tom & Jerry |
| &lt;b&gt;gras&lt;/b&gt; | <b>gras</b> | <b>gras</b> |
Dekodowanie jednego poziomu pozwala nie cofnąć zamierzonego kodowania: przykład kodu, który ma pokazywać „&” na ekranie, zapisuje się w stronie jako „&amp;”.
Akcenty i symbole
Dekodowanie rozumie wszystkie encje nazwane kończące się średnikiem, nie tylko pięć zwykłych. „café à 5 € © 2026” daje „café à 5 € © 2026”, a twarda spacja staje się prawdziwą twardą spacją. Encje liczbowe też są dekodowane: „été” daje „été”, a „😀” jak „😀” dają to samo emoji.
Co narzędzie pozostawia nienaruszone
- Nieznana encja, jak „&inconnue;”, pozostaje bez zmian.
- Encja bez końcowego średnika, jak „&” lub „<” w zdaniu, nie jest ruszana.
- Adres z parametrami, jak „https://exemple.fr/?a=1¶m=2©=4”, pozostaje dokładny: „¶m” i „©” 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 „<a href="x">l'été & plus</a>”. 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ę „&”, gdy tekst jest kodowany dwa razy.
Sprawdzenie wyniku
- Uruchamiaj dekodowanie ponownie, dopóki narzędzie sygnalizuje pozostałe encje.
- Porównaj z tekstem oryginalnym na ekranie.
- Sprawdź twarde spacje i emoji.
Najczęściej zadawane pytania
- Dlaczego mój tekst pokazuje „&”?
- 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.
