Когда нужно использовать HTML-объекты

Это несколько сбило меня с толку. С появлением UTF-8 в качестве де-факто стандарта в веб-разработке я не уверен, в каких ситуациях я должен использовать html-сущности и для каких из них я должен использовать символ UTF-8.

Примеры: em dash, амперсанд и т.д.

Прошу пролить свет на эту проблему. Будет оценено.

Ответ 1

Обычно вам не нужно использовать символы HTML-символов, если ваш редактор поддерживает Unicode. Объекты могут быть полезны, если:

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

Ответ 2

Основываясь на комментариях, которые я получил, я изучил это немного дальше. Кажется, что в настоящее время лучше всего отказаться от использования HTML-сущностей и вместо этого использовать фактический символ UTF-8. Ниже перечислены следующие причины:

  • Кодирование UTF-8 легче читать и редактировать для тех, кто понимает, что означает символ, и знать, как его набирать.
  • Кодировки UTF-8 столь же непонятны, как кодировки сущности HTML для тех, кто их не понимает, но они имеют преимущество рендеринга как специальных символов, а не трудно понять десятичные или шестнадцатеричные кодировки.

Пока ваша кодировка страницы правильно установлена ​​в UTF-8, вы должны использовать фактический символ вместо объекта HTML. Я прочитал несколько документов по этой теме, но наиболее полезными были:

Из статьи UTF-8: Секрет кодирования символов:

Википедия - отличное исследование для приложение, которое изначально использовалось ISO-8859-1, но переключился на UTF-8, когда это стало слишком громоздким для поддержки иностранные языки. Боты будут теперь фактически проходят статьи и конвертировать объекты символов в их соответствующие действительные символы для ради удобства пользователя и возможность поиска.

Эта статья также дает хороший пример с китайским кодированием. Вот сокращенный пример для лени:

UTF-8:

這兩個字是甚麼意思

HTML-сущности:

&#36889;&#20841;&#20491;&#23383;&#26159;&#29978;&#40636;&#24847;&#24605;

Кодирование объектов UTF-8 и HTML для меня не имеет смысла, но , по крайней мере, кодировка UTF-8 распознается как иностранный язык, и она будет правильно отображаться в окне редактирования. В статье далее говорится о версии, закодированной в сущности HTML:

Чрезвычайно неудобно для нас кто действительно знает, какой символ сущности, совершенно непонятные бедным пользователям, которые этого не делают! Даже немного более удобный, "понятные" сущности типа & Амп; тэта; оставят пользователей, которые не заинтересованы в обучении HTML царапая головы. С другой если они видят θ в окне редактирования, они будут знать, что это особый характер и относиться к нему соответственно, даже если они не знают, как писать этот характер.

Как отмечали другие, вам все равно придется использовать HTML-объекты для зарезервированных символов XML (амперсанд, меньше или больше).

Ответ 3

Сущности могут купить вам некоторую совместимость с мозгами, которые не понимают кодировки правильно. Я не верю, что это включает в себя любые текущие браузеры, но вы никогда не знаете, какие другие виды программ могут вас поразить.

Более полезным является то, что объекты HTML защищают вас от собственных ошибок: если вы неправильно настроили что-то на сервере, и в итоге вы обслуживаете страницу с HTTP-заголовком, который говорит, что это тег ISO-8859-1 и META, который говорит, что он UTF-8, по крайней мере, ваш &— es всегда будет работать.

Ответ 4

Я бы не использовал UTF-8 для символов, которые легко путать визуально. Например, трудно отличить emdash от минуса или, в частности, от неиспользуемого пространства из пространства. Для этих символов определенно используйте сущности.

Для символов, которые легко понятны визуально (например, в китайских примерах выше), продолжайте использовать UTF-8, если хотите.

Ответ 5

Объекты HTML полезны, когда вы хотите сгенерировать контент, который будет включаться (динамически) на страницы с (несколькими) разными кодировками. Например, у нас есть белое содержимое ярлыков, которое включено как в кодированные ISO-8859-1, так и UTF-8 веб-страницы...

Если преобразование набора символов из/в UTF-8 не было таким большим недостоверным беспорядком (вы всегда натыкаетесь на некоторые символы и некоторые инструменты, которые не преобразуются должным образом), стандартизация на UTF-8 была бы способом.

Ответ 6

Лично я делаю все в utf-8 с долгого времени, однако, на html-странице вам всегда нужно преобразовать амперсанды (&), больше ( > ) и меньше, чем (<) символов в их эквивалентные объекты, &, & gt; и <

Кроме того, если вы планируете выполнять некоторые программы с использованием текста utf-8, есть несколько вещей, на которые нужно следить.

  • XML требует дополнительных строк для проверки при использовании сущностей.
  • Некоторые библиотеки не работают хорошо с utf-8. Например, PHP в некоторых дистрибутивах Linux полностью утратил поддержку utf-8 в своих библиотеках регулярных выражений.
  • Труднее ограничить количество символов в тексте, использующем html-сущности, поскольку один объект использует много символов. Также всегда существует риск сокращения объекта пополам.

Ответ 7

Если ваши страницы правильно закодированы в utf-8, вам не нужно будет создавать html-объекты, просто используйте нужные вам символы.

Ответ 8

Все предыдущие ответы имеют смысл для меня.

Кроме того: в основном это зависит от редактора, который вы намерены использовать, и языка документа. Минимальным требованием для редактора является то, что он поддерживает язык документа. Это означает, что если ваш текст находится на японском языке, остерегайтесь использования редактора, который не показывает их (т.е. Никаких объектов для самого документа). Если его английский, вы можете даже использовать старый vim-подобный редактор и использовать объекты только для относительной редко и копии; и друзья. Конечно: & for > и другим специальностям HTML по-прежнему нужны экраны. Но даже с другими латинскими языками (немецкий, французский и т.д.) Writing & auml; это боль, в которой вы знаете, где...

Кроме того, я лично пишу сущности для невидимых персонажей и те, которые похожи на стандарт-ascii и поэтому легко путаются. Например, есть u1173 (похожий на тире в некоторых кодировках) или u1175, который выглядит как вертикальная панель. Я бы использовал объекты для них в любом случае.