На самом деле, это , а не и неоднозначные амперсанды и , поэтому вполне допустимо использовать предложенный вами 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 (;), где эти символы не соответствуют ни одному из имен дано в именованном разделе ссылок на символы.
Объекты, которые не заканчиваются точкой с запятой (например, &
), обрабатываются по-разному в значениях атрибутов, хотя:
Если ссылка на символ используется как часть атрибута, а последний соответствующий символ не является символом 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 не делает это правильно.)