在元描述中,是否需要将“&”转换为“&”?

20

我正在插入一个带有 & 符号的内容。我想知道是否需要将其插入为 & 以便该符号能够被正确读取。

像这样:

<meta name="description" content="lorem lorem S&amp;B lorem lorem">

或者像这样:

<meta name="description" content="lorem lorem S&B lorem lorem">
3个回答

20

在HTML内容中,你总是需要使用&amp;&#38;来代表“&”符号,而不能直接使用裸露的&。这不仅适用于元素标签之间的文本,也适用于属性值。没有例外。

这是因为&本身表示HTML实体引用的开始(就像上面所示),当出现在可能被解释为实体引用的文字中间时,它经常会导致问题。


2
@Daniel Ramirez-Escudero:一个是命名实体,另一个是它的十进制代码点。两种表达同一事物的不同方式。如果您喜欢,可以继续使用&amp; - BoltClock
在HTML内容中,"&"可以被转义为"&"表示,还是它总是显示为"&"或"&#38"? - boddhisattva
我得到了一个答案,可以在Rails Web框架的上下文中使用html_safe方法来实现。如果有人想这样做,请先阅读关于何时理想地使用html_safe方法的相关内容。 - boddhisattva
在我看来,支持遗留系统只是为了防范极少可能出现的问题,这比理解问题并最终避免新的遗留问题更加重要,因为实体可能会被弃用和最终删除。当我们的后代不必因为&3k而导致下水道爆炸时,他们将感激我们。 - Erik Reppen

18
在HTML5中,您不允许在属性值中使用"模糊的和符号":
引用值是文本和字符引用的混合体,但有一个额外的限制,即文本不能包含模糊的和符号。 模糊的和符号被定义为:
[...]一个U+0026和符号(&),后面跟着一个或多个字母数字ASCII字符,后面跟着一个";"(U+003B)字符,其中这些字符与命名字符引用部分中给出的任何名称都不匹配。
在您的示例(&B lorem)中,和符号(&)后面跟着一个字母数字ASCII字符(B),但这个字符没有后面跟着一个分号(;)。所以您的和符号不是模糊的
这意味着你提供的两个例子都是有效的。

-1

这取决于搜索引擎。Google倾向于将其作为字符串拾取,因此您需要添加&amp;和其他相关的ascii代码。

由于网络标准,我建议您始终将&符号编写为&amp;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接