在Unicode感知浏览器时代,HTML中的命名实体是否仍然是必需的?

Han*_*etz 16 html php unicode internationalization

我在过去几年中做了很多PHP编程,让我讨厌的一件事就是对Unicode和多字节字符串的弱支持(当然,原则上没有).例如,"htmlentities"似乎是PHP世界中一个常用的函数,我发现当你努力保持每个字符串可以本地化时,它只会在你的数据库中存储UTF-8,只提供UTF -8 webpages等突然间,在你的数据库和浏览器之间的某个地方,这个绝望的天真函数假装每个字节都是一个字符并且混乱了一切.

我只是喜欢,只是倾倒这种功能,他们似乎完全是多余的.这几天仍然需要写'ä' 代替'?至少我的Firefox似乎非常高兴能够显示最奇怪的亚洲字形,只要它们以适当的编码方式提供.

更新:更准确:除了显示HTML标记之外,其他任何东西都是必需的实体(如"<"表示"<")

更新2:

@Konrad:你是说,不,不需要命名实体吗?

@Ross:但是在输入时清理用户输入是不是更好,以保持我的输出逻辑免受这些问题的影响?(当然,假设可以对输入进行可靠的消毒 - 但是,如果不是,那么它可以输出吗?)

Sör*_*lau 7

不鼓励application/xhtml+xml使用"真实"XHTML中的命名实体(即,使用,而不是更常用的text/html兼容模式).除了在XML本身(定义五&lt;,&gt;,&amp;,&quot;,&apos;),他们会都在你使用特定的DOCTYPE的DTD来定义.这意味着您的浏览器必须明确支持DocType,这远非给定的.另一方面,编号实体显然只需要查找表来获得正确的Unicode字符.

至于你是否需要实体:你几乎可以期待任何现代浏览器都支持UTF-8.因此,只要您能保证数据库,标记和Web服务器都同意服务,就抛弃实体.