Когда следует использовать HTML-сущности? - PullRequest
107 голосов
/ 12 января 2009

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

  • em dash (-, &emdash;)
  • амперсанд (&, &)
  • 3/4 ​​фракция (¾, ¾)

Пожалуйста, пролите свет на этот вопрос. Это будет оценено.

Ответы [ 8 ]

109 голосов
/ 12 января 2009

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

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

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

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

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

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

UTF-8

這兩個字是甚麼意思

HTML-сущности :

這兩個字是甚麼意思

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

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

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

73 голосов
/ 12 января 2009

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

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

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

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

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

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

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

4 голосов
/ 12 января 2009

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

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

4 голосов
/ 12 января 2009

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

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

2 голосов
/ 12 января 2009

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

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

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

2 голосов
/ 12 января 2009

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

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