【问题标题】:How to prevent Google Chrome and IE substituting '|' in URL with %7C如何防止谷歌浏览器和 IE 替换“|”在带有 %7C 的 URL 中
【发布时间】:2014-04-01 13:49:14
【问题描述】:

我们已调整旧网站以使用语义 URL,并且 - 由于多种原因 - 无法使用 / 作为分隔符。相反,我们使用| 作为分隔符。

例如:

www.example.com/page|sub-page1|sub-sub-page2

只有一个小问题一切正常。 Google Chrome 和 IE 将 URL 显示为:

www.example.com/page%7Csub-page1%7Csub-sub-page2

我们使用| 来编码我们的| 分隔符,但Chrome 和IE 仍然用%7C 代替。

Firefox 和 Safari 正确显示 URL!

【问题讨论】:

  • 而且由于在 HTTP URL 上下文中将 | 编码为 %7C 是完全正确,您的抱怨现在究竟是什么......?
  • 1.我们担心复制带有 %7C 的 URL 可能会在放置在其他网站上时出现问题; 2.使URL难以阅读哪种违背了使用语义URL的目的!
  • 1.你应该同样担心在你的 URL 中使用 unquoted | 也可能会导致问题,2. 那么不要在你的“语义” URL 中使用非 URL 安全字符首先!
  • 在 URL 中包含|未编码在技术上是不正确的。然而,浏览器是如此容错,如果您在链接 URL 中使用未编码的链接,它们通常会为您应用缺少的编码。当浏览器在地址栏中显示它们时,它们是如何理解的则是另一回事(关键字IRI)——但我认为你不能在这里强制任何东西,如果浏览器只是不想一起玩。
  • 好的。谢谢(你的)信息。伙计们。我们会找到另一个分隔符!

标签: html internet-explorer google-chrome url percent-encoding


【解决方案1】:

您在评论中提到“我们会找到另一个分隔符”。

您可能想查看this earlier answer,它准确描述了 URL 的哪些部分允许使用哪些字符。

由此可见,你可以“随意”使用的字符是

unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

在我看来,在所有这些字符中,~ 是唯一可以合理地代替您的| 的字符。

【讨论】:

  • 谢谢弗洛里斯。我有时会看到使用逗号(www.example.com/page,sub-page1,sub-sub-page2)。您对此有何看法?
  • @richardTinkler 逗号不在未保留列表中。即使你可以摆脱它。选择你认为更好看的东西。
【解决方案2】:

这是 HTML 对其 URL 进行编码的方式,恰好字符 %7C 是“|”的编码版本所以基本上就用~。

【讨论】:

    猜你喜欢
    • 2019-04-24
    • 2011-02-18
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多