Dlaczego „i reg” jest renderowany jako „®” bez ograniczającego średnika

Pojawił się problem, który został ujawniony w naszej kampanii marketingowej Google opartej na AdWords. Jednym ze standardowych parametrów jest „region”. Gdy użytkownik wyszuka i kliknie link sponsorowany, Google generuje długi adres URL, aby śledzić kliknięcie i wysyła kilka rzeczy do odsyłacza. Przechwytujemy to dla naszych rekordów i zauważyliśmy, że parametr „Region” przechodzi nieprawidłowo. Co powinno być

http://ravercats.com/meow?foo=bar&region=catnip

zamiast tego przechodzi przez:

http://ravercats.com/meow?foo=bar®ion=catnip

Sprawdziłem, że ma to miejsce we wszystkich przeglądarkach. To rozumiemSkładnia encji HTML jest zdefiniowany następująco:

&VALUE;

gdzie granicą wiodącą jest znak ampersand, a granicą zamykającą jest średnik. Wydaje się dość prosty. Problem polega na tym, że nie jest to przestrzegane w przypadku jednostki ® i powoduje ona całe zamieszanie w naszym systemie.

Czy ktoś wie, dlaczego tak się dzieje? Czy to błąd w DTD? (Szukam aktualnego DTD HTML, aby sprawdzić, czy mogę to zrozumieć) Próbuję dowiedzieć się, co byłoby wspólne dla przeglądarek, aby tak się stało, dlatego szukam DTD.

Oto dowód, którego możesz użyć. Weź ten kod, usuń z niego plik HTML i renderuj go w przeglądarce:

<html>
<a href="http://foo.com/bar?foo=bar&region=US&register=lowpass&reg_test=fail&trademark=correct">http://foo.com/bar?foo=bar&region=US&register=lowpass&reg_test=fail&trademark=correct</a>
</html>

EDYCJA: Dla wszystkich, którzy sugerują, że muszę uciec z całego adresu URL, powyższe adresy URL są dokładnie takie, jak przykłady. Prawdziwy adres URL pochodzi bezpośrednio od Google i nie mam kontroli nad tym, jak jest zbudowany. Te sugestie, choć ważne, nie odpowiadają na pytanie: „Dlaczego tak się dzieje”.

questionAnswers(8)

yourAnswerToTheQuestion