我在过去几年中做了很多PHP编程,让我讨厌的一件事就是对Unicode和多字节字符串的弱支持(当然,原则上没有).例如,"htmlentities"似乎是PHP世界中一个常用的函数,我发现当你努力保持每个字符串可以本地化时,它只会在你的数据库中存储UTF-8,只提供UTF -8 webpages等突然间,在你的数据库和浏览器之间的某个地方,这个绝望的天真函数假装每个字节都是一个字符并且混乱了一切.
我只是喜欢,只是倾倒这种功能,他们似乎完全是多余的.这几天仍然需要写'ä' 代替'?至少我的Firefox似乎非常高兴能够显示最奇怪的亚洲字形,只要它们以适当的编码方式提供.
更新:更准确:除了显示HTML标记之外,其他任何东西都是必需的实体(如"<"表示"<")
@Konrad:你是说,不,不需要命名实体吗?
@Ross:但是在输入时清理用户输入是不是更好,以保持我的输出逻辑免受这些问题的影响?(当然,假设可以对输入进行可靠的消毒 - 但是,如果不是,那么它可以输出吗?)
不鼓励application/xhtml+xml
使用"真实"XHTML中的命名实体(即,使用,而不是更常用的text/html
兼容模式).除了在XML本身(定义五<
,>
,&
,"
,'
),他们会都在你使用特定的DOCTYPE的DTD来定义.这意味着您的浏览器必须明确支持DocType,这远非给定的.另一方面,编号实体显然只需要查找表来获得正确的Unicode字符.
至于你是否需要实体:你几乎可以期待任何现代浏览器都支持UTF-8.因此,只要您能保证数据库,标记和Web服务器都同意服务,就抛弃实体.