我正在编写自动生成 HTML 的代码,我希望它能够正确编码。
假设我正在生成指向以下 URL 的链接:
http://www.google.com/search?rls=en&q=stack+overflow
我假设所有属性值都应该是 HTML 编码的。(如果我错了,请纠正我。)这意味着如果我将上面的 URL 放入锚标记中,我应该将 & 符号编码为&,如下所示:
&
<a href="http://www.google.com/search?rls=en&q=stack+overflow">
那是对的吗?
是的。HTML 实体在 HTML 属性中进行解析,而杂散&会产生歧义。这就是为什么您应该始终编写&而不是仅仅&在 所有 HTML 属性中编写。
&
也就是说,只有&和引号 需要 编码。如果您茅的属性中有特殊字符,则无需对这些字符进行编码以满足 HTML 解析器。
茅
过去,URL 需要对非 ASCII 字符进行特殊处理,例如茅. 您必须使用百分比转义对它们进行编码,在这种情况下它会给出%C3%A9,因为它们是由RFC 1738定义的。但是,RFC 1738 已被RFC 3986(URI,统一资源标识符)和RFC 3987(IRI,国际化资源标识符)取代, WhatWG 的工作基于其定义浏览器在看到带有非 ASCII 的 URL 时应如何表现自 HTML5 以来的字符。因此,现在可以安全地在 URL 中包含非 ASCII 字符,无论是否采用百分比编码。
%C3%A9