在过去的几年中,我做了很多PHP编程,但让我烦恼的一件事是对Unicode和多字节字符串的弱支持(当然,本质上没有)。例如,“htmlentities”似乎是PHP世界中一个非常常用的函数,我发现当努力保持每个字符串可本地化,只在数据库中存储UTF-8时,它只会提供UTF -8网页等等。突然间,在你的数据库和浏览器之间的某个地方,假装每个字节都是一个字符,将所有东西混淆起来。
。现在还需要写'&auml'吗?我的Firefox能够显示奇怪的亚洲字形,只要它们以适当的编码进行服务即可。
更确切地说:除了显示HTML标签之外,其他命名实体都是必需的(如“<”中的&lt;“)
发布于 2018-04-09 09:24:14
不鼓励application/xhtml+xml
使用“真正的”XHTML命名实体(即使用更常用的text/html
兼容模式,而不使用更常用的兼容模式)。除了在XML本身(定义五<
,>
,&
,"
,'
),他们会都在你使用特定的DOCTYPE的DTD来定义。这意味着浏览器必须明确支持该DocType,这远远不是给定的。另一方面,编号实体显然只需要一个查找表来获得正确的Unicode字符。
至于现在是否还需要实体:可以期望任何现代浏览器都支持UTF-8。因此,只要你可以保证数据库,标记和网络服务器都同意服务,那么就将这些实体抛弃。
发布于 2018-04-09 10:14:02
如果使用XHTML,实际上建议不要使用命名实体。某些浏览器(Firefox)在将其解析为XML(通常不会)时,不会读取DTD文件,因此无法处理这些实体。
无论如何,如果没有其他强制性理由,使用UTF-8作为编码是最好的做法,这只意味着文档的创建者需要一个体面的编辑器。OS X并没有真正存在这个问题,因为大多数需要的字形可以通过“alt”键进行访问,但是Windows没有这个功能。
https://stackoverflow.com/questions/-100008001
复制相似问题