#html #unicode #ascii
Вопрос:
У меня есть сайт с кодировкой=utf-8 и запуском начальной загрузки 3.7 с доктипом html5.
Кажется, что когда кто-то вставляет это:
<div>amp;#139;textamp;#155;</div>
он отображается неправильно — вот так:
?tekst?
Это работает, если мы используем:
<div>amp;#8249;textamp;#8250;</div>
или
<div>amp;lsaquo;textamp;rsaquo;</div>
что дает нам: ‹text›
но я хотел бы знать, почему первый набор шрифтов unicode не работает?
Комментарии:
1. Какими персонажами являются
amp;#139;
иamp;#155;
должны быть?2. Каковы ваши ожидания?
amp;@139;
является управляющим символом в Юникоде. И поскольку весь веб теперь является Юникодом, просто используйте редактор Юникода и поместите туда реальный символ. Короче говоря: сущности с номерами зависят от кодировки, поэтому их очень легко взломать (особенно при обновлении), поэтому старайтесь не использовать их3. Извините, некоторые кавычки:
‹text›
4. Спасибо тебе, Джакомо. Я знаю, что не должен их использовать. Я просто ищу объяснение, почему.
5. @GiacomoCatenazzi ваше утверждение о том, что » сущности с числами зависят от кодирования «, было справедливо только в устаревших реализациях HTML (возможно, в начале MSIE?). В настоящее время мы находимся в 3-м тысячелетии, надеюсь, во времена повсеместного распространения Юникода. Используйте кодовые точки из unicode.org/Public/UNIDATA/UnicodeData.txt ad libitum, легко в шестнадцатеричных вариантах числовой ссылки на сущность, например
amp;#x2039;textamp;#x203A;
, для‹text›
…
Ответ №1:
Как определено в этой Рекомендации W3C (также поддерживается в HTLM):
[Определение: Ссылка на символ относится к определенному символу в наборе символов ISO/IEC 10646, например, к которому нет прямого доступа с доступных устройств ввода.]
Ссылка на персонажа
CharRef ::= 'amp;#' [0-9] ';' | 'amp;#x' [0-9a-fA-F] ';'
Ограничение корректности: Правовой характер. Символы, на которые ссылаются с
помощью ссылок на символы, должны соответствовать производным для символа
(любой символ Юникода, за исключением суррогатных блоков, FFFE и FFFF.).Если ссылка на символ начинается с »
amp;#x
«, цифры и буквы до;
конца обеспечивают шестнадцатеричное представление кодовой точки символа в стандарте ISO/IEC 10646.
Если она начинается только с »amp;#
«, цифры до;
конца обеспечивают десятичное представление кодовой точки символа.
Важно: коды символов … синхронизируются между Юникодом и ISO/IEC 10646