web-dev-qa-db-ja.com

UTF8文字を含むURLをHTMLでエンコードする必要がありますか?

名前やアクセント文字を含むものを考えています。

たとえば、次の間に違いがありますか?

<a href="http://example.com/thing?name=forêt">link</a>

そして

<a href="http://example.com/thing?name=for%C3%AAt">link</a>

ブラウザはこれらを同じように処理しますか?または、これらのリンクをエンコードする説得力のある理由はありますか?

4
Tom

ブラウザはこれらを同じように処理しますか?

はい、すべての(モダン)ブラウザーはこれらを同じように処理します。 HTMLソースで自分で明示的にエンコードしない場合、すべての(現代の)ブラウザーは暗黙的にURLをURLエンコード(パーセントエンコード)します。

どちらの場合も、ユーザーがリンクをクリックすると、ブラウザーは暗黙的にパーセントエンコードされたURLを要求します。ブラウザのコンテキストメニューから[リンクアドレスのコピー]を選択し、どちらの場合もパーセントエンコードされたURLをコピーします。 JavaScriptを使用して両方のリンクのhref属性を読み取ると、パーセントエンコードされたURLが返されます。

実際、HTML5ではエンコードされていないUnicode文字が許可されていると思います。
https://stackoverflow.com/a/19542940/369434

潜在的な問題は、単に「古いブラウザ」かもしれません。私は何歳かわかりません。しかし、「古い」ものは心配するには古すぎるかもしれません。 (?)

3
MrWhite

W3Cは、URLはASCII文字セットを使用してのみインターネット経由で送信できると述べています。これらの文字を何かに変換する必要があります。多くの場合、安全ではない文字はエンコードされた形式に置き換えられます。パーセントでエンコードされた参照は here にあります。

ここに参照があります: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

1
genepool99