Объекты HTML: когда использовать десятичную или шестнадцатеричную

Есть ли хорошее правило для того, чтобы использовать десятичную или шестнадцатеричную нотацию для объектов HTML?

Например, неразрывная дефис записывается десятичной как ‑ и в шестнадцатеричной форме как ‑.

Этот ответ говорит о том, что шестнадцатеричный для Unicode; означает ли это, что hex должен использоваться, если вы используете тег <meta charset="utf-8"> в документе <head>?

Иногда я замечаю, что символы сущности ошибочно отображаются вместо сущностей, которые они представляют, например, &amp; (вместо амперсанда) в строке темы сообщения или заголовке RSS. Является ли шестнадцатеричным или десятичным лучше, чтобы избежать этого?

Последнее соображение: может ли использование hex или decimal повлиять на четкость рендеринга (четкость) символа?

Ответы

Ответ 1

Эмпирическое правило: используйте то, что вы предпочитаете, но предпочитаете hex. ☺

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

Как описывает @AlexW, шестнадцатеричные ссылки более естественны, чем десятичные, из-за того, как написаны стандарты кода символа. Но если вы найдете десятичные ссылки более удобными, используйте их.

Проблема не имеет ничего общего с тегами meta и символьными кодировками. Основная причина, по которой ссылки на символы были введены в HTML, заключается в том, что они позволяют вводить символы совершенно независимо от кодировки документа. Сюда входят символы, которые не могут быть непосредственно записаны в используемой кодировке. Благодаря им вы можете ввести любой символ Unicode, даже если кодировка символов - ASCII или какая-либо другая ограниченная кодировка, например ISO-8859-1.

В прежние времена было общепринято рекомендовать использование названных ссылок (или "ссылок на сущности", поскольку они формально называются в классическом HTML), когда это возможно, потому что ссылка, подобная &Omega;, когда она отображается буквально на пользователь, более понятен, чем ссылка, например &#x3A9; или &#937;. Это не имеет отношения к более чем десятилетию, поскольку веб-браузеры рассматриваются. Но, например, клиенты электронной почты могут быть довольно глупыми. В этом отношении недостаточно развиты H ^ H ^ H ^ H ^ H ^ H ^ H ^ H ^ H. Они могут, например, показывать ссылки как таковые в списке сообщений, даже если они могут правильно их интерпретировать при просмотре сообщения. Но, похоже, нет никакого последовательного поведения, на которое вы могли бы рассчитывать.

Ответ 2

Они называются числовые символьные ссылки. Они получены из SGML, а числовая часть из них ссылается на конкретный Unicode code point персонажа, который вы пытаетесь отобразить. Они позволяют вам представлять символы Unicode, даже если конкретный набор символов, на котором вы написали HTML-код, не имеет символа, на который вы ссылаетесь. Независимо от того, ссылаетесь ли вы на кодовую точку с десятичной или шестнадцатеричной, не важно, за исключением очень старых браузеров, которые предпочитают десятичную. Была добавлена ​​поддержка Hexidecimal, поскольку коды кода Unicode указаны в шестнадцатеричной нотации, и это значительно облегчает поиск кодовой точки, а затем добавляет ссылку без преобразования в десятичную:

U+007D

=

&#x007D;

Чтобы ответить на ваш вопрос:

В этом ответе говорится, что шестнадцатеричный для Unicode; имеет ли это значение hex следует использовать, если вы используете тег <meta charset="utf-8"> в документ?

Вы должны понимать, что UTF-8 обратно совместим с ASCII/ISO-8859-1. Таким образом, первые 256 символов UTF-8 будут одинаковыми в ASCII и UTF-8. Hex проще для UTF-8, потому что с 2013 года есть 1114112 кодов Unicode. Так что проще написать &#x110000;, чем писать &#1114112; и т.д.

Ответ 3

В целом

HTML (и XML) предлагает три способа кодирования специальных символов: numeric hex &#x26;, numeric decimal &#38; (aka "ссылки на символы" ) и назван &amp; (aka "ссылки на сущности" ). Они оставались одинаково действительными и полностью поддерживались всеми основными браузерами на протяжении десятилетий. Они работают с любой кодировкой, но всегда визуализируются из набора Unicode (который совместим с ASCII, ISO Latin и Windows Latin, минус-коды 128-159).

Таким образом, это зависит от личных предпочтений, с некоторыми замечаниями.

Необходимость

Если вы добавите в свой HTML правильный тег meta, вам не нужно вообще кодировать специальные символы (кроме & < > " ' или, более того, просто & < в свободном тексте). Исключением является необходимость кодирования символа, отсутствующего в указанной кодировке. Но если вы используете UTF-8, вы все равно можете представлять что-нибудь из Unicode.

Краткость

Для любого символа ниже индекса 10 десятичное значение короче. Вкладка &#9;, по сравнению с &#x09;, поэтому может быть целесообразно использовать теги pre, содержащие много данных TSV, например.

Простота использования

Именованные ссылки наиболее легки в использовании и запоминании, особенно для кода, совместно используемого разработчиками разных фонов и наборов навыков. &lt; гораздо интуитивнее, чем &#x3c;. Что касается других комментариев относительно релевантности, они на самом деле все еще полностью поддерживаются как часть стандарта W3C и даже были расширены для HTML5.

Лучшая практика

Использование названных или десятичных ссылок не может быть лучшей общей практикой, поскольку имена имеют только английский язык и уникальны для HTML (даже XML не имеет именных ссылок, минус "большая пятерка" ). Большинство языков программирования и таблиц символов используют шестнадцатеричное кодирование, поэтому в долгосрочной перспективе упрощается и переносится, когда вы остаетесь последовательными. Хотя для небольших проектов или особых случаев это может не иметь особого значения.

Дополнительная информация: http://xmlnews.org/docs/xml-basics.html#references