Особенности Юникода и html

#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