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