html - 带方括号的编码 URL。 Chrome/Firefox/IE 中的不同行为

标签 html url cross-browser escaping

我有一个看起来像这样的链接(有点难看,因为它是 URL )

<a href="/items?fc%5B%5D=12345&amp;fc%5B%5D=56789&amp;utf8=%E2%9C%93">foo</a>

要清楚一点,它是 URL 编码并转换为

<a href="/items?fc[]=12345&fc[]=56789&utf8=✓">foo</a>

提交表单时,目标 URL 在不同浏览器中看起来不同:

在 Firefox 中,它看起来像需要的:

http://mydomain/items?fc[]=12345&fc[]=56789&utf8=✓

在 Chrome 中,方括号显示为 URL 编码(当使用许多方括号时会给出非常难看和不专业的地址)。

http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=✓

在 IE9(及更早版本)中,所有内容都显示为 URL 编码:

http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=%E2%9C%93

我可以接受“utf8=...”部分,因为它只是 IE 中的一个问题。 但是当在 URL 中显式输入方括号时,没有一个浏览器有任何处理问题,所以我不明白为什么 Chrome 和 IE,而不是 Firefox 必须显示带有 URL 编码的括号。

由于表单的 html 代码在所有浏览器中都是相同的,我想这与浏览器有关,而不是与站点(在本例中为 Ruby on Rails 站点)有关

编辑: 因此,为了澄清我的实际问题: 为什么这是不同的? 有没有办法让它至少在 Chrome 中看起来不错? 它可以通过在 href="..."中不进行 URL 转义来修复,但我认为这违反了 URL 编码规则?

最佳答案

当您想共享这些链接(有状态)时,我假设您预计您的链接将被共享、从网页链接、复制、通过电子邮件发送等。

即使在浏览器之外(例如,您的链接被复制到其他页面、电子邮件等),也可能会发生一些编码。如果您必须使用这些字符,您可能不得不接受丑陋的地方会出现。

关于html - 带方括号的编码 URL。 Chrome/Firefox/IE 中的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628717/

相关文章:

html - 在带边框的 div 内对齐文本

javascript - 如何自定义<select>显示值?

java - 获取 json 元素 URL netbeans

url - 如何将我的域名与我的 AWS 应用程序相关联?

IE 8 的 CSS 阴影插图

input - 什么工具可以拦截所有桌面操作系统的数字锁定键?

javascript - 在 javascript 循环中添加多个 HTML 元素

html - 如何用 li 标签替换表格?

url - PrestaShop $link -> getProductLink($product) 给出了错误的 URL

html - HTML5 语义标签(文章、页脚、页眉)的降级问题