HTML-сущности и набор символов - PullRequest
9 голосов
/ 29 августа 2010

При включении сущностей HTML в документ HTML, должны ли сущности быть из того же набора кодировки символов, который задан для документа?

Например, если я собираюсь использовать авторские прававойдите в HTML-документ, который указан как UTF-8, необходимо ли использовать HTML-сущность Unicode (©) или можно использовать другие сущности, такие как HTML-сущность ASCII (©)?

Пожалуйста, объясните свой ответ.Я знаю, что это будет "работать", но есть ли случай, когда он не будет работать?

Спасибо!

Ответы [ 2 ]

10 голосов
/ 29 августа 2010

© и © указывают один и тот же символ - 169 эквивалентен шестнадцатеричному A9.Они оба указывают на символ авторского права.Символьные объекты в HTML всегда ссылаются на кодовые точки Unicode, это описано в HTML 4 Standard .Таким образом, даже если ваш набор символов изменяется, ваши сущности все равно ссылаются на одни и те же символы.

Это также означает, что вы можете кодировать символы, которые на самом деле не появляются в выбранном вами наборе символов.Я только что создал документ в наборе символов ISO-8859-1, но он включает в себя греческую лямбду.Кроме того, ASCII не может напрямую кодировать символ авторского права, но он может через символьные объекты.

Редактировать: Читая комментарии к другому ответу, я хочу немного уточнить это.Если вы используете UTF-8 в качестве кодировки символов для вашего документа, вы можете в исходном HTML-коде написать символ авторского права, как есть.(Конечно, вам нужно найти способ ввода: копировать-вставлять как обычно.) UTF-8 позволит вам напрямую кодировать любой символ, который вы хотите.ISO-8859-1 намного более ограничен, а ASCII еще более ограничен.Например, в моем HTML, если мой документ является документом UTF-8, я могу сделать:

<p>Hi there. This document is ©2010. Good day!</p>

или:

<p>Hi there. This document is &#xA9;2010. Good day!</p>

или:

<p>Hi there. This document is &copy;2010. Good day!</p>

Первый действителен, только если набор символов поддерживает «©».Два других всегда действительны, но менее читабельны.Какой бы текстовый редактор вы ни использовали, если он стоит своего веса, он сможет сообщить вам, в каком наборе символов он кодирует документ.

Если вы сделаете это, вам нужно убедиться, что ваш веб-серверинформирует клиента о правильном наборе символов или о том, что ваш документ объявляет его следующим образом:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Я использовал UTF-8 там в качестве примера.XHTML должен иметь набор символов в открывающем теге <?xml ... ?>.

4 голосов
/ 29 августа 2010

Прелесть кодировки UTF-8 в том, что вы можете просто включить двоичный символ. Вам вообще не нужно кодировать его как сущность. Таким образом: ©

О, вы просто хотите узнать разницу между двумя сущностями? Здесь ничего нет. Один описывает байт в шестнадцатеричном формате, а другой - в десятичном.

...