gpt4 book ai didi

php - 在支持 Unicode 的浏览器时代,HTML 中的命名实体是否仍然必要?

转载 作者:IT王子 更新时间:2023-10-29 00:18:23 24 4
gpt4 key购买 nike

在过去的几年里,我进行了大量的 PHP 编程,但一直让我烦恼的一件事是对 Unicode 和多字节字符串的支持较弱(可以肯定的是, native 没有)。例如,“htmlentities”似乎是 PHP 世界中一个经常使用的函数,我发现当你努力保持每个字符串可本地化时,它绝对令人讨厌,只在你的数据库中存储 UTF-8,只传递 UTF -8 个网页等。突然间,在您的数据库和浏览器之间的某处,出现了这个天真得无可救药的函数,它假装每个字节都是一个字符,然后把一切都搞砸了。

我只是喜欢放弃这种功能,它们看起来完全是多余的。 现在还有必要写“ä”吗?而不是“ä”?至少我的 Firefox 似乎非常乐意显示即使是最奇怪的亚洲字形,只要它们以正确的编码提供。

更新:更准确地说:命名实体对于显示 HTML 标签以外的任何事情都是必需的(如“<”中的“<”)

更新 2:

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

@Ross:但是,在用户输入时对其进行清理不是更好吗,以使我的输出逻辑免受此类问题的影响? (当然,假设可以对输入进行可靠的清理 - 但是,如果不是,它可以输出吗?)

最佳答案

不鼓励使用“真实”XHTML 中的命名实体(即使用 application/xhtml+xml,而不是更常用的 text/html 兼容模式)。除了 XML 本身定义的五个 (<, >, &, ", '),它们都必须在您使用的特定 DocType 的 DTD 中定义。这意味着您的浏览器必须明确支持该 DocType,这远非给定的。另一方面,带编号的实体显然只需要一个查找表即可获得正确的 Unicode 字符。

至于这些天你是否需要实体:你几乎可以期望任何现代浏览器都支持 UTF-8。因此,只要您能保证数据库、标记和 Web 服务器都同意为其提供服务,就放弃实体。

关于php - 在支持 Unicode 的浏览器时代,HTML 中的命名实体是否仍然必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com