амперсанд в адресе электронной почты (href) - PullRequest
4 голосов
/ 06 апреля 2010

Я работаю с адресом электронной почты, в котором есть амперсанд, пользователь хочет ссылку «связаться с нами», чтобы открыть новое сообщение с заполненным адресом, Я обычно использую href, но амперсанд заставляет это не работать, есть идеи?

вот что у меня есть на данный момент:

<a href="mailto:L&D@gha.org.uk? subject=MessageTitle&amp;" 
        style="font-family: Verdana; font-size: large; font-weight: bold; color: #800000">#GHA Organisation Development</a>

Ответы [ 2 ]

8 голосов
/ 06 апреля 2010

Используйте &amp; вместо простого &. Ваш href URL-адрес находится внутри HTML, поэтому его нужно правильно экранировать, чтобы он был действительным HTML.

3 голосов
/ 17 января 2012

На самом деле, это , а не и неоднозначные амперсанды и , поэтому вполне допустимо использовать предложенный вами HTML. В настоящее время принят неправильный ответ (хотя я согласен, что всегда рекомендуется кодировать амперсанды, чтобы избежать путаницы).

Спецификация HTML определяет неоднозначные амперсанды следующим образом:

Неоднозначный амперсанд - это символ U + 0026 AMPERSAND (&), за которым следует один или несколько символов в диапазоне от U + 0030 DIGIT ZERO (0) до U + 0039 DIGIT NINE (9), U + 0061 LATIN SMALL ПИСЬМО А - U + 007A ЛАТИНСКОЕ МАЛЕНЬКОЕ ПИСЬМО Z и U + 0041 ЛАТИНСКОЕ КАПИТАЛЬНОЕ ПИСЬМО А - U + 005A ЛАТИНСКИЙ КАПИТАЛЬНЫЙ ПИСЬМО Z, за которым следует символ U + 003B SEMICOLON (;), где эти символы не соответствуют ни одному из имен дано в именованном разделе ссылок на символы.

Объекты, которые не заканчиваются точкой с запятой (например, &amp), обрабатываются по-разному в значениях атрибутов, хотя:

Если ссылка на символ используется как часть атрибута, а последний соответствующий символ не является символом SEMICOLON U + 003B (;), а следующий символ является либо символом U + 003D EQUALS SIGN (=), либо в диапазоне от U + 0030 DIGIT ZERO (0) до U + 0039 DIGIT NINE (9), U + 0041 LATIN CAPITAL LETTER A до U + 005A LATIN CAPITAL LETTER Z, или U + 0061 LATIN MALL LETTER A до U + 007A LATIN МАЛЕНЬКОЕ ПИСЬМО Z, то по историческим причинам все символы, которые были сопоставлены после символа U + 0026 AMPERSAND (&), должны быть не использованы, и ничего не возвращается.

Но это неприменимо здесь, так как следующий символ @.

FWIW, я тщательно исследовал это и написал о своих находках здесь: http://mathiasbynens.be/notes/ambiguous-ampersands

Я также создал онлайн-инструмент , который вы можете использовать для проверки разметки на наличие неоднозначных амперсандов или ссылок на символы, которые не заканчиваются точкой с запятой, оба из которых являются недействительными. (В настоящее время ни один валидатор HTML не делает это правильно.)

http://i.stack.imgur.com/nyGPK.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...