Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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


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

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

Ответ 3

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