Наборы символов, кодировки и числовые ссылки на символы

Индексируя по-маленьку (см. Вершки Рунета), обратил внимание, что некоторые вебмастера, стараясь украсить страницы подопечных сайтов, используют нестандартные символы, указывая их, согласно рекомендации HTML4, в виде числовых ссылок на символы (&#nnn;).

Проблема заключается в том, что хотя в спецификации HTML4, явно указано:

Numeric character references specify the code position of a character in the document character set.

И хотя Википедия (по крайней мере английская) не делает различия между Character Set (набор символов) и Character Encoding (кодировка символов), для HTML (и XHTML, и XML), как подмножества SGML, это разные понятия. Поэтому использовать для числовых ссылок на символов кодовые значения символов из выбраной кодировки символов, как послупает большинство вебмастеров, вкорне не верно. Должны указываться коды символов в UNICODE, именно этот набор символов принят в SGML по-умолчанию.

Честно говоря, мне ни разу не встрачался документ в вебе, где явно указывался набор символов (отличный от UNICODE), но порывшись в Гугле, удалось отыскать пример такого объявления:


<!SGML "ISO 8879:1986"

CHARSET "... formal name for EBCDIC ..."
...
>
<!DOCTYPE book>
<book>
...

Кстати, в Tutorial: Character sets & encodings in XHTML, HTML and CSS на сайте W3C по этому поводу сказано более чётко:

NCRs, or Numeric Character References, and entities are ways of representing any Unicode character in XHTML / HTML using only ASCII characters.

...

One point worth special note is that values of numeric character references (such as &#x01F5; and &#501; for ǵ) are interpreted as Unicode characters - no matter what encoding you use for your document.

Наборы символов, кодировки и числовые ссылки на символы: 11 комментариев

  1. Itman

    Ага, я тоже в свое время обращал на это внимание. А что, интересно, нужно указывать, если кодовая страница cp-1251, а хочется вставить символы Latin-1? У них юникодовский значения меньше 255 и, кажется, браузер их замеппит в русские буквы.

  2. Maxime

    Нужно писать баг-репорт авторам броузера 🙂 Хотя я подозреваю, что авторы того броузера предложат поюзать UTF-8 🙂

  3. Itman

    Попробовал последние версии IE и FF: берут из юникода, может это было в старых версиях браузера. Спасибо за напоминание, мне это знание в будущем пригодится

  4. Maxime

    Поисковик собрался писать ? 🙂

    Самое интересное, как детектить такие баговые страницы и как их обрабатывать. Яндкс, например, символы &155; отображает как двойные кавычки.

  5. Itman

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

  6. Maxime

    Смотря как работает 🙂 Если периодически генерит статику, которая и отдаётся клиентам, то самое то для нагруженых систем.

  7. Itman

    Да он кривой на UserAgent писаный, который, блин, урлы из robots.txt мне выдает с кодом 503. Да и медленный, я-то ОЧЕНЬ много хочу заиндексировать, а он так - игрушечный

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *