在Unicode感知浏览器的年龄中仍然需要在HTML中命名实体?
我在过去几年中做了很多PHP编程,一件事让我烦恼是对Unicode和多朋友弦的弱点(肯定,本身就没有)。
例如,"Htmlentities"似乎是PHP世界中使用的许多功能,当我们努力保持每个字符串本地化时,我发现它绝对烦人,只能在数据库中存储UTF-8,只提供UTF -8网页等突然间,数据库和浏览器之间的某个地方,假装每个字节都有这个无可救药的天真函数是一个角色,并使所有东西都搞定了。
我只是喜欢刚倾倒这种功能,他们看起来完全多余。
这些天还有必要写'盲'而不是'?
'?
至少我的Firefox似乎非常乐意展示陌生人的亚洲字形,只要它们在适当的编码中服务。
更新:更精确:是除了显示HTML标记的其他内容所必需的命名实体(如"<"为"<")
更新2:
@konrad:你是说的,不需要命名实体吗?
@ross:但是在输入时消毒用户输入不会更好,以防止我的输出逻辑免于这样的问题?
(当然,当然,可以对输入的可靠消毒是可能的,但如果不是,它可以在输出上?
)
解决方案
Safari似乎有一些字形的问题,但不是其他字形,可能不需要,但这可能是最好的,这是我的意见,而不是我自己的观察。
如果使用XHTML,它实际上建议不要使用命名实体([所需的引用])。
一些浏览器(Firefox),当将其解析为XML(通常不会),不要读取DTD文件,因此无法处理实体。
由于它是最好的实践,无论如何,如果没有引人注目的原因,则使用UTF-8作为编码,这唯一的意味着文档的创建者需要一个不仅可以处理文件的体面编辑器,还需要提供一种很好的进入方式潜水员雕文。
OS X并没有真正具有此问题,因为可以通过Alt键到达最需要的字形,但Windows没有此功能。
@konrad:你是说的,不需要命名实体吗?
恰恰。
除非当然,否则有愚蠢的限制,例如愚蠢的限制。
传统数据库驱动程序扼杀UTF-8等
在"真实"XHTML中命名实体(即,具有"应用程序/ XHTML + XML",而不是更常用的"文本/ HTML"兼容模式)被劝阻。
除了XML本身中定义的五('<','>',',','',''),它们都必须在我们正在使用的特定doctype的DTD中定义。
这意味着浏览器必须明确地支持远离给定的Doctype。
编号实体,另一方面,显然只需要查找表来获取右侧的Unicode字符。
至于这些日子都需要实体:我们可以非常希望任何现代浏览器支持UTF-8.
因此,只要我们能保证数据库,标记和Web服务器都同意为实体提供服务。