一尘不染

我是否要对&符号进行编码[?]()

html

[

我正在编写自动生成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">

那是对的吗?

]()


阅读 269

收藏
2020-05-10

共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字符,无论是否经过百分比编码。

2020-05-10