为什么逻辑非字符(¬)出现在 HTTP GET 查询字符串中

Why does logical not character (¬) appear in HTTP GET query string

下面的 HTML 演示了我的问题 - 当我将鼠标悬停在 link 上或单击它时,&not 在 Chrome 中变为 %AC,在 Firefox 中变为 ¬,使得查询无意义。这种行为对我来说没有意义,我还没有在任何文档中找到它的描述,尽管除了关于 URLs 的 RFC 之外,我真的不知道去哪里看。

<html>
<body>
<p><a href="http://localhost/?truth=falsehood&not_broken=broken">foo</a></p>
</body>
</html>

上下文是我有一些 javascript 生成 HTTP GET 参数以根据服务器的响应出现在 link url 中。如果这些参数之一的字段以 not_ 开头,以便 &not_ 出现在查询字符串中,则 Chrome 和 Firefox 似乎都将 &not 转换为 ¬(符号对于数学形式逻辑中的 'not')如果我使用开发工具检查 URL 然后,在 Chrome 的情况下,当我单击 [=33= 时进入涉及 %AC 的内容】,弄成废话。大概这是因为 HTML 实体 &not; 为该符号 (U+00AC) 编码,但查询字符串中没有分号。

我的问题是,为什么浏览器会在 href 属性中用这个字符替换 &not,其中 & 具有不同的特殊含义,即使没有分号,如果有比避免在查询字符串中使用 HTML 实体名称更好的方法来缓解这种情况。

通常,HTML 属性中的 & 字符需要转义为 &amp;

如果它的使用是明确的,你可以不用它,但这里不是这种情况。