【问题标题】:Why doesn't Twitter and Google API documentation encode ampersands in URLs?为什么 Twitter 和 Google API 文档不对 URL 中的 & 符号进行编码?
【发布时间】:2012-02-11 01:56:48
【问题描述】:

have read 我应该在 HTML 中将我的 & 符号编码为 &
然而,来自知名公司的大量代码示例不知何故忘记了这样做

只是我脑海中的几个例子:

Google Web Fonts示例代码:

<link href='http://fonts.googleapis.com/css?family=PT+Sans&subset=latin,cyrillic' rel='stylesheet' type='text/css'>

Google Maps 文档:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&language=ja">

Twitter Anywhere官方教程:

<script src="http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&v=1" type="text/javascript"></script>

在链接中转义与号有什么真正的好处吗?
这与浏览器怪癖有关吗?这只是文档中的错误吗?

尊敬的回答者,请确保您回答了正确的问题。

我知道我应该按照规范避开 & 符号。我也知道为什么首先发明了这种机制。我不是asking about this。我的问题是:

是否有原因受人尊敬的公司的 API 文档经常违反此规则?

【问题讨论】:

  • 回答者,请注意他们没有这样做,因为它是正确的。未能对与号进行编码实际上违反了HTML 4.1 specification, section 5.3.2: Character entity references作者应该使用“&” (ASCII 十进制 38)而不是“&”以避免与字符引用的开头混淆(实体引用打开分隔符)。 作者还应使用“&”在属性值中,因为在 CDATA 属性值中允许字符引用。
  • 丹,我知道你已经在你的帖子中链接到一个关于这个的问题,但目前的回答者似乎错过了它。
  • @Jeremy:感谢您的评论,我编辑了问题。

标签: html url cross-browser html-entities


【解决方案1】:

这里有两种不同的上下文。

  1. 在 javascript href 的上下文中,& 很好,不应该被编码。
  2. 在 HTML 链接中 & 是被禁止的,应该被转义。

在 HTML 链接上下文中,一个 HTML 字符实体将在地址传递给 HTTP 进程之前被解码; URL 编码的字符不会,因为服务器可以直接读取它。

【讨论】:

    【解决方案2】:

    不在链接中转义与号有什么真正的好处吗?

    它节省了几次击键。

    这与浏览器怪癖有关吗?

    没有

    这只是文档中的错误吗?

    是的

    知名公司的 API 文档经常违反此规则是否有原因?

    无知和/或懒惰。浏览器执行错误恢复,因此它们要么不会注意到错误,要么不在乎。文档可能不是由他们最好的专家编写的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      相关资源
      最近更新 更多