«А», которое вы видите здесь на экране, на самом деле не сохраняется как «А» в компьютере, это скорее последовательность из 1 и 0. Набор символов или кодировка определяет способ кодирования символов таким способом. Набор символов ASCII включает только несколько символов, которые он может кодировать, почти исключительно ограничиваясь символами английского языка. Но по историческим причинам и техническим ограничениям времени это был набор символов интернета (очень рано).
Как UTF-8, так и объекты HTML могут использоваться для кодирования символов, которые не являются частью ASCII. Сущности HTML достигают этого, придавая особое значение специальным последовательностям символов. Используя его, вы можете кодировать символы, не охватываемые ASCII, используя только символы ASCII. UTF-8 (Unicode) делает то же самое, просто расширяя набор символов для включения большего количества символов. HTML-сущности «допустимы» только в среде, где вы пытаетесь их декодировать, как правило, в браузере. Символы UTF-8 являются универсальными в любом приложении, которое поддерживает набор символов.
Текст, содержащий только символы, охватываемые ASCII:
Price: $20
(UTF-8)
Price: $20
(ASCII с сущностями HTML)
Текст, содержащий европейские символы, не включенные в ASCII:
Beträge: 20€
(UTF-8)
Beträge: 20€
(ASCII с сущностями HTML)
Текст, содержащий азиатские символы, скорее всего, не охваченный ASCII:
値段:二千円
(UTF-8)
値段:二千円
(ASCII с сущностями HTML)
Проблема с UTF-8 заключается в том, что клиент должен понимать UTF-8. В течение последнего десятилетия это не вызывало беспокойства, поскольку все современные компьютеры и браузеры не имеют проблем с пониманием UTF-8. UTF-8 (Unicode) может кодировать практически все символы, используемые сегодня на этой планете (за небольшими исключениями). Используя его, вы можете работать с текстом «как есть». Абсолютно предпочтительная кодировка для сохранения текста.
Проблема с сущностями HTML в том, что нормальные символы приобретают особое значение. При написании ä
оно приобретает особое значение «ä». Если вы на самом деле намереваетесь написать «& auml;», вам нужно дважды закодировать последовательность как ä
.
HTML-сущности также общеизвестно, что они не читаются. Вы не хотите использовать их для кодирования «специальных» символов в обычном тексте. В этом качестве они играют роль неадекватного набора символов. Вместо этого используйте Unicode.
Важное использование сущностей HTML, которые не зависят от используемого набора символов, заключается в отделении разметки HTML от текста. HTML также придает особое значение специальным последовательностям символов. <b>text</b>
- это обычная последовательность символов, но она имеет особое значение для анализаторов HTML. Если вы намеревались просто написать « text », вам необходимо закодировать его как <b>text</b>
, чтобы анализатор HTML не принял его за теги HTML.