为什么逻辑非字符(¬)出现在 HTTP GET 查询字符串中
Why does logical not character (¬) appear in HTTP GET query string
下面的 HTML 演示了我的问题 - 当我将鼠标悬停在 link 上或单击它时,¬
在 Chrome 中变为 %AC,在 Firefox 中变为 ¬,使得查询无意义。这种行为对我来说没有意义,我还没有在任何文档中找到它的描述,尽管除了关于 URLs 的 RFC 之外,我真的不知道去哪里看。
<html>
<body>
<p><a href="http://localhost/?truth=falsehood¬_broken=broken">foo</a></p>
</body>
</html>
上下文是我有一些 javascript 生成 HTTP GET 参数以根据服务器的响应出现在 link url 中。如果这些参数之一的字段以 not_
开头,以便 ¬_
出现在查询字符串中,则 Chrome 和 Firefox 似乎都将 ¬
转换为 ¬(符号对于数学形式逻辑中的 'not')如果我使用开发工具检查 URL 然后,在 Chrome 的情况下,当我单击 [=33= 时进入涉及 %AC 的内容】,弄成废话。大概这是因为 HTML 实体 ¬
为该符号 (U+00AC) 编码,但查询字符串中没有分号。
我的问题是,为什么浏览器会在 href
属性中用这个字符替换 ¬
,其中 &
具有不同的特殊含义,即使没有分号,如果有比避免在查询字符串中使用 HTML 实体名称更好的方法来缓解这种情况。
通常,HTML 属性中的 & 字符需要转义为 &
。
如果它的使用是明确的,你可以不用它,但这里不是这种情况。
下面的 HTML 演示了我的问题 - 当我将鼠标悬停在 link 上或单击它时,¬
在 Chrome 中变为 %AC,在 Firefox 中变为 ¬,使得查询无意义。这种行为对我来说没有意义,我还没有在任何文档中找到它的描述,尽管除了关于 URLs 的 RFC 之外,我真的不知道去哪里看。
<html>
<body>
<p><a href="http://localhost/?truth=falsehood¬_broken=broken">foo</a></p>
</body>
</html>
上下文是我有一些 javascript 生成 HTTP GET 参数以根据服务器的响应出现在 link url 中。如果这些参数之一的字段以 not_
开头,以便 ¬_
出现在查询字符串中,则 Chrome 和 Firefox 似乎都将 ¬
转换为 ¬(符号对于数学形式逻辑中的 'not')如果我使用开发工具检查 URL 然后,在 Chrome 的情况下,当我单击 [=33= 时进入涉及 %AC 的内容】,弄成废话。大概这是因为 HTML 实体 ¬
为该符号 (U+00AC) 编码,但查询字符串中没有分号。
我的问题是,为什么浏览器会在 href
属性中用这个字符替换 ¬
,其中 &
具有不同的特殊含义,即使没有分号,如果有比避免在查询字符串中使用 HTML 实体名称更好的方法来缓解这种情况。
通常,HTML 属性中的 & 字符需要转义为 &
。
如果它的使用是明确的,你可以不用它,但这里不是这种情况。