Нужны ли именованные объекты в HTML в эпоху браузеров, поддерживающих Unicode?

В последние годы я много занимался программированием на PHP, и одна вещь, которая меня раздражает, это слабая поддержка Unicode и многобайтовых строк (конечно, изначально их нет). Например, «htmlentities», кажется, очень популярная функция в мире PHP, и я обнаружил, что она очень раздражает, когда вы пытаетесь сохранить локализуемость каждой строки, храните только UTF-8 в своей базе данных, только поставляйте UTF -8 веб-страниц и т. Д. Внезапно где-то между вашей базой данных и браузером появляется эта безнадежно наивная функция, притворяющаяся, что каждый байт является символом и все портит.

Я просто хотел бы просто сбросить этот вид функций, они кажутся совершенно лишними. Нужно ли в наши дни писать '& auml;' вместо "ä"? По крайней мере, мой Firefox, кажется, совершенно счастлив отображать даже самые странные азиатские глифы, если они представлены в правильной кодировке.

Обновление. Чтобы быть более точным: нужны ли именованные объекты для чего-либо еще, кроме отображения тегов HTML (как в "& lt;" для "<")

Обновление 2:

@ Конрад: Вы говорите, что нет, именованные объекты не нужны?

@Ross: Но не лучше ли очистить вводимые пользователем данные, когда они введены, чтобы защитить мою логику вывода от подобных проблем? (конечно, при условии, что надежная дезинфекция на входе возможна - но тогда, если это не так, может ли она быть на выходе?)

24.08.2008 16:04:39
3 ОТВЕТА
РЕШЕНИЕ

Именованные объекты в «реальном» XHTML (то есть с application/xhtml+xml, а не с более часто используемым text/htmlрежимом совместимости) не приветствуются. Помимо пяти , определенной в самом XML ( &lt;, &gt;, &amp;, &quot;, &apos;), они все должны быть определены в DTD конкретного DocType вы используете. Это означает, что ваш браузер должен явно поддерживать этот DocType, что далеко от заданного. Нумерованные сущности, с другой стороны, очевидно, требуют только таблицу поиска, чтобы получить правильный символ Unicode.

Что касается того, нужны ли вам сущности во все эти дни: вы можете ожидать, что любой современный браузер будет поддерживать UTF-8. Поэтому, если вы можете гарантировать, что база данных, разметка и веб-сервер все согласны обслуживать это, отбросьте сущности.

7
24.08.2008 16:44:04

Кажется, у Safari есть проблемы с некоторыми глифами, но не с другими, это может и не понадобиться, но, вероятно, лучше всего это сделать, конечно, это мое мнение и не подкреплено ничем, кроме моих собственных наблюдений.

0
24.08.2008 16:07:07

Если используется XHTML, на самом деле рекомендуется не использовать именованные объекты ([цитата нужна]). Некоторые браузеры (Firefox ...) при синтаксическом анализе этого файла в формате XML (чего они обычно не делают) не читают файлы DTD и поэтому не могут обрабатывать объекты.

Поскольку в любом случае рекомендуется использовать UTF-8 в качестве кодировки, если нет веских причин поступать иначе, это означает лишь то, что создатель документов нуждается в достойном редакторе, который может не только обрабатывать документы, но и обеспечивает хороший способ ввода дайверы глифы. OS X действительно не имеет этой проблемы, потому что большинство необходимых глифов может быть достигнуто с помощью клавиш «alt», но Windows не имеет этой функции.


@ Конрад: Вы говорите, что нет, именованные объекты не нужны?

Точно. Если, конечно, нет глупых ограничений, например, устаревшие драйверы баз данных, которые душат UTF-8 и т. Д.

3
20.06.2010 13:55:25