2012-01-31 9 views
10

http://www.w3schools.com/tags/ref_urlencode.aspなぜURLエンコード、または

をエンコードする文字のURLは、多くの場合、ASCII文字セット以外の文字が含まれているので、URLが有効なASCII形式に変換する を持っています。

しかし、スペース、/、%はASCII文字セットの一部です。なぜそれらを最初にエンコードするのですか?どの文字をエンコードする必要がありますか?

+0

たとえば、UTF-8文字、または異なる文字セットの任意の文字。 ASCIIはちょうど文字の最小範囲です。 – Halcyon

+0

私はshureではありませんが、私はすべての文字が異なる意味(例えば&とスペース)を持つことができるコード化されるべきだと思います。 w3schools.comは使用しないでください。w3cとは関係がなく、間違っていることがよくあります。 –

答えて

5

前述のとおり、スペースはURLでは無効です。ほとんどのブラウザは自動的にそれらのコードを記述します。しかし...

リンク先のページには、「試してください」セクションに「Günter」という単語が含まれています。 "Günter"という単語がクエリ文字列のパラメータとして送信された場合、それは機能しません。 "ü"は標準のASCII文字セットではないためです。

非ASCII文字の可能性がある場合に使用することを意図しています。たとえば、データベースのデータを使用してハイパーリンクを作成する場合などです。コードがユーザープロファイルページへのリンクを作成するとします。エンコードされていないが、私のは次のようになります。

<a href="profile/?username=David Stratton">Your profile</a> 

ギュンターさんは

<a href="profile/?username=Günter">Your profile</a> 

鉱山は、ほとんどのブラウザが処理できることだろうが。ギュンターの、おそらくない。

エンコードされ、これらは有効なURLです

<a href="profile/?username=David%20Stratton">Your profile</a> 

<a href="profile/?username=G%FCnter">Your profile</a> 

なります。

(最もよく設計されたシステムは、そのようなパラメータには、ユーザー名を渡すことはないという事実を許してください。これは、コンセプトを明確にするだけのサンプルだった。)

+0

*「それはうまくいかない」とは言わないでください*。何かがうまくいかない場合は、少なくともそれが何をするかを説明してください。 – yckart

1

有効なURLを確保するために、スペースなどの特定の文字をエスケープする必要があります。一度GETパラメータを生成すると、これがたくさん出てくるはずです。

6

URL内の文字をエンコードする必要があります一部の文字はURL specificationで特別な意味を持つため、一部の文字は使用できず、一部の文字はすべての文字セットで表現できません。

少しのガイダンスについては、this introを参照してください。

'/'は、URLのコンポーネントセパレータとして使用するために予約され、 '%'はエスケープ文字として使用されます。

+0

+1スペック/リンク:-) – The111

関連する問題