/* 06.09.2005 */
URL в ссылках и амперсанд (&) - Is Valid HTML?
Вчера написал небольшую статью о параметрах в протоколе "mailto", который мы указываем для создания ссылки на email- адрес, и как всегда проверил страницу на соответствие стандартам с помощью валидатора W3C, но что это ...
Амперсанды (&) в URL
Валидатор белым по красному сообщает: This page is not Valid HTML 4.01 Strict!
.
А все дело было в том, что у одной из ссылок в URL атрибута href, параметры разделялись самим символом "&". Сокращенно это выглядело вот так:
<a href="mailto:?subject=Feedback&body=Hello">...</a>
Вы можете спросить: "Ну, а чем же они, интересно, должны разделяться?". А ответ достаточно прост: Если Вы хотите использовать символ амперсанд (&) в вашем документе, Вы должны закодировать его как "&" (даже в URL!)
.
Таким образом правильный вариант выглядит так:
<a href="mailto:?subject=Feedback&body=Hello">...</a>
За этим не всегда удается уследить конечно, но для этого и существует валидатор.
Так, а в чем собственно проблема?
Почему нельзя просто писать "&"?
Все дело в HTML сущностях, или как их ещё называют, мнемониках (" < > € ...). Мнемоники начинаются с символа амперсанд "&", который зарезервирован специально для мнемоник. Поэтому, когда встречается амперсанд, то это должно быть началом мнемоники. Хотя браузеры, конечно, не раздувают из этого проблему, и в большинстве случаев вы получите то, что ожидали. Но это не повод делать НЕПРАВИЛЬНО.
Также учтите, что заменять амперсанд "&" на мнемонику "&" следует только в HTML документах, где он является специальным символом (также как и "<" и ">"). Когда же вы набираете URL в адресной строке браузера или указываете ссылку в письме, которое представлено как простой текст (plain text), то писать нужно именно "&".
И на последок. Когда вы кликаете ссылку в HTML документе, то браузер преобразует "&" в "&" и сервер получит строку запроса с символом "&".