убежать или не убежать: хорошо сформированный XHTML с диакритическими знаками - PullRequest
1 голос
/ 28 февраля 2011

Скажите, что у вас есть документ XHTML на английском языке, но в нем есть символы с акцентом (например, meta name="author" content="José"). Допустим, у вас нет контроля над заголовками HTTP.

  1. Следует ли заменить символы для соответствующих им именованных объектов (например, á и т. Д.)?

  2. Должен ли атрибут xml: lang быть установлен на английский?

Я знаю, что могу проверить рекомендации W3C, но я прошу большего с практической точки зрения.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Следует ли заменять символы для соответствующих им именованных объектов (например, á и т. Д.)?

Поскольку вы не можете контролировать заголовки HTTP (и, следовательно, объявленную кодировку символов)) вы должны кодировать все, используя ASCII (поскольку это безопасное подмножество практически всего).

Для этого потребуется использовать сущности для всего, чего нет в ASCII.Именованные являются предпочтительными (так как они проще для людей, редактирующих HTML для обработки), но не обязательны.

Должен ли тип документа и атрибут xml: lang быть установлен на английском языке?

EN в Doctype - это ссылка на язык, на котором написаны комментарии в DTD . Типы документов HTML 3.x / 4.x и XHTML 1.x должны всегдаиспользуйте EN.

Атрибут langдополнительно атрибут xml:lang) должен указывать язык, на котором написано содержимое. Если это английский, то он долженбыть английским.

1 голос
/ 28 февраля 2011

Похоже, я как-то упустил момент, так что вот ответ, и следит за разглагольствованиями по кодировкам.

xml:lang="en" не запрещает вам использовать любой символ, который вы хотите, это только метаданные для использования браузером, поисковыми системами, программным обеспечением для обеспечения доступности и т. Д. Если на странице есть на английском языке, тогда продолжайте. , напишите это.

Что касается диакритических знаков, HTML поддерживает как непосредственное написание символа, так и написание сущности, как в атрибутах, так и в текстовых узлах (и, возможно, также в именах узлов, но я не уверен; во всяком случае, этого не произойдет с HTML ). Однако, на мой взгляд, проще использовать UTF-8 везде, чем избегать сущностей; и есть 4 способа установить кодировку страницы, поэтому трудно поверить, что в практическом случае это невозможно.


С практической точки зрения, будучи говорящим по-французски с диакритическими знаками в моем имени, я нахожу это ОСНОВНОЕ раздражение (и уценка не позволит мне подчеркнуть ОСНОВНЫЕ достаточно), когда веб-сайты не поддерживают выделенные буквы. Даже если вы установите xml:lang на английский, эта проблема не решится.

Я рекомендую вам использовать UTF-8, потому что он обратно совместим с ASCII и может кодировать каждый символ UCS. Если у вас нет контроля над заголовками HTTP, у вас все еще есть два варианта: объявление XML и тег meta.

Если я правильно помню, если вы получили XML-документ, атрибут encoding в теге <?xml?> имеет приоритет. Это ваше первое решение, но, вероятно, оно не поддерживается устаревшими браузерами.

<?xml encoding="UTF-8"?>

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

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

В HTML5 + вы можете использовать эту более простую форму:

<meta charset="UTF-8">

Поскольку вы используете XHTML, вы захотите закрыть их самостоятельно (и использовать соответствующий тип application/xhtml+xml MIME в теге Content-Type <meta>).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...