Для веб-контента лучше использовать сущность или реальный персонаж?

Я не понимаю, как правильно вставлять специальные типографские символы (например, кавычки и длинные тире) при создании содержимого, которое будет отображаться на веб-странице. Лучше или предпочтительнее вводить фактические символы Юникода следующим образом:

“Hello, World”

или использовать сущности для специальных символов:

“Hello, World”

Существуют ли какие-либо риски, связанные с использованием любого из них (в частности, риск того, что пользователь увидит какую-то сумасшедшую замену символов), или они действительно эквивалентны?

Ответы (2)

Используйте настоящего персонажа.

Недостатком использования сущностей является удобочитаемость. Популярная викторина: что выводит следующее?

†‹ some text ›

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

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

  • Страница сохранена в кодировке UTF-8.
  • HTTP-заголовок Content-Type указывает кодировку UTF-8.
  • Данные, извлеченные из баз данных, сохраняются в кодировке UTF-8.
  • Соединения с базой данных используют кодировку UTF-8.

Есть некоторые исключения.

Когда использовать побеги

Синтаксические символы. Есть три символа, которые всегда должны появляться в содержимом как escape-последовательности, чтобы они не взаимодействовали с синтаксисом разметки. Они являются частью языка для всех документов, основанных на XML и HTML.

  • &lt;(<)
  • &gt;(>)
  • &amp;(&)
(Без поиска!) 8224 находится в шестнадцатеричном формате, например, 8192+8+24 ~ U+2020. Тогда одно из фиксированных мест? Другие 2 — это одноугольные цитаты, и я думаю, что людям, возможно, придется поискать и их < 😀>
@Jongware, вы правы в двух других, но я дам вам половину балла за хорошие дедуктивные рассуждения для кинжала :)†‹ some text ›
хммм..... Я использую сущности.. Я имею в виду, что довольно легко сказать, что &mdash;или &middot;есть. И использование таких вещей, как &raquo;или &amp;, довольно понятно, если вы используете их несколько раз. У меня были клиенты, жалующиеся на «странные символы» (ромбы ?), когда я не использую сущности. Теперь мне интересно, если это больше проблема с текстом, предоставленным из Microsoft Word и неправильно сохраненным как обычный текст.
@ Скотт, это происходит со мной постоянно с Word при сохранении или копировании / вставке простого текста.
О да, @Scott Word навсегда наполнит ваш текст невидимыми минами.

Теперь в html5 мы больше не используем кодировку ascii, а кодировку utf-8. Если вы определите свою кодировку как utf-8, а также кодируете в ней сам файл, у вас не будет проблем. (старый редактор не умеет кодировать в utf-8, но есть куча бесплатных программ, которые умеют)

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