知道这&
是 & 的 html 实体值 - 像 w3c 这样的验证器如何知道这一点?即使当我查看我的源代码时,它也已经被解析为正确的值。
1 回答
您的问题基于一个错误的前提——正如 Co_42 指出&
的那样,它不是'&'
. 它是代表字符的 HTML字符引用'&'
。的 ASCII 值'&'
是38
(或0x26
)。
您的源代码几乎肯定由 ASCII 或 Unicode 文本文件组成。那些不使用 HTML 实体。如果您在源代码中存储了一个带有 & 符号的字符串,那么它可能会以一个裸露的"&"
. 如果某处有包含实际 HTML 数据的字符串文字,它可能包含"&"
.
当您使用某种工具或函数将字符串转换为准备放入 HTML 或 XML 文档的文本时,任何"&"
将(应该!)转换为"&"
.
当读取 HTML 文档的程序遇到 ASCII"&"
时,它可以假定这是 HTML 字符引用的开始。这没关系,因为实际文本中的所有& 符号都应该被转换为"&"
.
作为一个有点反常的例子,如果你在文字处理器中打开你的源代码并将其保存为 HTML 文档,你会发现在实际文件中,"&"
已转换为"&"
(并且"&"
已转换为"&"
)。如果您随后在浏览器中打开该文档,您会发现与符号的显示方式与您在文本编辑器中查看源代码时的显示方式相同。保存 HTML 文档时发生的编码步骤对应于浏览器显示它时发生的解码步骤。
如果您将类似"Fish & chips"
的内容直接放入实际的 HTML 文档中,您的 HTML 文档将无效。使事情复杂化的事实是,诸如浏览器之类的程序倾向于尝试从文档中的错误中恢复并显示文档。因此,"Fish & chips"
当您打开无效文档时,您的浏览器可能仍会显示在屏幕上。但是,专门用于发现 HTML 文档中的错误的程序(例如 W3C 验证器)会通知您您的文档无效。