我有一个链接长这样(因为它是URL,所以有点丑)
<a href="/items?fc%5B%5D=12345&fc%5B%5D=56789&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需要显示带有URL编码的方括号,而Firefox则不需要。
由于表单的HTML代码在所有浏览器中都相同,我认为这与浏览器有关,而不是与该网站(本例中为Ruby on Rails网站)有关。
编辑: 因此,要澄清我的实际问题: 为什么会出现这种差异? 是否有一种方法可以使它在至少Chrome中看起来好一些? 可以通过不对href="..."进行URL转义来丑陋地修复它,但我认为那违反了URL编码规则?