Мне действительно нужно кодировать '& 'as' & amp; '?

Я использую символ ' & ' с HTML5 и UTF-8 в моего сайта ]. Google показывает штраф в амперсанде на его выдаче, как и все браузеры в их заголовках.

http://validator.w3.org дает мне следующее:

& не запускает ссылку на символ. (&, вероятно, следовало экранировать как и . )

Мне действительно нужно сделать и ?

Меня не смущают, что мои страницы проверяются ради проверки, но мне любопытно услышать мнение людей по этому поводу, и если это важно и почему.

194
задан Richard J. Ross III 6 August 2013 в 18:15
поделиться

13 ответов

Да. Как и было сказано в ошибке, в HTML атрибуты являются #PCDATA, что означает, что они разбираются. Это означает, что вы можете использовать символьные сущности в атрибутах. Использование & само по себе неправильно и, если бы не снисходительность браузеров и тот факт, что это HTML, а не XHTML, нарушило бы парсинг. Просто экранируйте его как &, и все будет в порядке.

HTML5 позволяет оставлять его без экранирования, но только в том случае, если данные, которые следуют за ним, не выглядят как допустимая символьная ссылка. Однако лучше просто экранировать все экземпляры этого символа, чем беспокоиться о том, какие из них следует экранировать, а какие не нужно.

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

Пожалуйста, просто экранируйте свой код. Это избавит вас от многих проблем в будущем.

136
ответ дан 23 November 2019 в 05:25
поделиться

Если вы действительно говорите о статическом тексте

<title>Foo & Bar</title>

, хранящемся в каком-то файле на жестком диске и обслуживаемом непосредственно сервером, то да: вероятно, он не нужен чтобы сбежать.

Однако, поскольку в настоящее время существует очень мало HTML-контента, который полностью статичен, я добавлю следующий отказ от ответственности, в котором предполагается, что HTML-контент создается из какого-либо другого источника (контент базы данных, пользовательский ввод, Интернет результат вызова службы, результат устаревшего API, ...):

Если вы не избежите простого & , то, скорее всего, вы также не избежите & или или или