У меня возникла проблема, которая была выявлена в нашей маркетинговой кампании, основанной на Google adwords. Одним из стандартных используемых параметров является "регион". Когда пользователь выполняет поиск и нажимает на спонсируемую ссылку, Google генерирует длинный URL-адрес для отслеживания щелчка и отправляет кучу материала в реферере. Мы фиксируем это для наших записей, и мы заметили, что параметр "Регион" происходит неправильно. Что должно быть
http://ravercats.com/meow?foo=bar®ion=catnip
вместо этого появляется как:
http://ravercats.com/meow?foo=bar®ion=catnip
Я проверил, что это происходит во всех браузерах. Я понимаю, что синтаксис HTML-объекта определяется следующим образом:
&VALUE;
где главная граница - амперсанд, а закрывающая граница - точка с запятой. Кажется достаточно простым. Проблема заключается в том, что это не соблюдается для субъекта ®, и оно разрушает все виды хаоса в нашей системе.
Кто-нибудь знает, почему это происходит? Это ошибка в DTD? (Я ищу текущий HTML DTD, чтобы узнать, могу ли я это понять). Я пытаюсь выяснить, что будет распространено в браузерах, чтобы это произошло, поэтому я ищу DTD.
Вот доказательство, которое вы можете использовать. Возьмите этот код, внесите из него HTML файл и отрисуйте его в браузере:
<html>
<a href="#" onclick="location.href='http://foo.com/bar?foo=bar®ion=US®ister=lowpass®_test=fail&trademark=correct'; return false;">http://foo.com/bar?foo=bar®ion=US®ister=lowpass®_test=fail&trademark=correct</a>
</html>
РЕДАКТИРОВАТЬ: всем, кто предполагает, что мне нужно избежать всего URL-адреса, приведенные выше примерные URL-адреса являются именно такими примерами. Настоящий URL-адрес поступает напрямую от Google, и я не могу контролировать, как он построен. Эти предложения, хотя и действительны, не отвечают на вопрос: "Почему это происходит".