小编典典

我是否在中编码 & 符号?

all

我正在编写自动生成 HTML 的代码,我希望它能够正确编码。

假设我正在生成指向以下 URL 的链接:

http://www.google.com/search?rls=en&q=stack+overflow

我假设所有属性值都应该是 HTML 编码的。(如果我错了,请纠正我。)这意味着如果我将上面的 URL 放入锚标记中,我应该将 &
符号编码为&,如下所示:

<a href="http://www.google.com/search?rls=en&amp;q=stack+overflow">

那是对的吗?


阅读 56

收藏
2022-08-24

共1个答案

小编典典

是的。HTML 实体在 HTML 属性中进行解析,而杂散&会产生歧义。这就是为什么您应该始终编写&amp;而不是仅仅&所有 HTML
属性中编写。

也就是说,只有&和引号 需要 编码。如果您的属性中有特殊字符,则无需对这些字符进行编码以满足 HTML 解析器。

过去,URL 需要对非 ASCII 字符进行特殊处理,例如.
您必须使用百分比转义对它们进行编码,在这种情况下它会给出%C3%A9,因为它们是由RFC
1738
定义的。但是,RFC 1738 已被RFC
3986
(URI,统一资源标识符)和RFC
3987
(IRI,国际化资源标识符)取代, WhatWG
的工作基于其定义浏览器在看到带有非 ASCII 的 URL 时应如何表现自 HTML5
以来的字符
。因此,现在可以安全地在 URL 中包含非 ASCII 字符,无论是否采用百分比编码。

2022-08-24