10

私はこのようなリンクを持っています(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 エンコーディング規則に反していると思いますか?

4

1 に答える 1

1

これらのリンクを(ステートフルネスで)共有したいので、リンクが共有されたり、Webページからリンクされたり、コピーされたり、電子メールで送信されたりすることを期待していると思います.

ブラウザの外部 (たとえば、リンクが他のページや電子メールなどにコピーされる場所) でも、何らかのエンコードが発生する可能性があります。これらの文字を使用する必要がある場合、どこかに醜いものが表示されることを受け入れる必要がある場合があります。

于 2012-11-07T15:43:15.183 に答える