URLエンコーディングの簡単な紹介

一般に「ウェブサイトアドレス」とも呼ばれるウェブサイトのURLは、特定のウェブサイトにアクセスするために誰かがウェブブラウザに入力するものである。 URLを介して情報を渡すときは、特定の許可された文字のみを使用するようにする必要があります。 これらの許可される文字には、英字、数字、およびURL文字列で意味を持ついくつかの特殊文字が含まれます。 URLに追加する必要があるその他の文字は、ブラウザーの移動中に問題のないページやリソースを見つけるためにエンコードする必要があります。

URLのエンコーディング

URL文字列の中で最も一般的に符号化された文字は、文字です。 URLにプラス記号(+)が付いている場合は、この文字が表示されます。 これはスペース文字を表します。 プラス記号は、URLのスペースを表す特殊文字として機能します。 これを見る最も一般的な方法は、件名を含むmailtoリンクです。 件名にスペースを入れる場合は、プラス記号としてエンコードすることができます。

mailto:email?件名= this + is + my +件名

このエンコードテキストのビットは、「this is my subject」の件名を送信します。 エンコーディングの "+"文字は、ブラウザでレンダリングされるときに実際のに置き換えられます。

URLをエンコードするには、特殊文字をエンコード文字列に置き換えるだけです。 これはほぼ常に%文字で始まります。

URLのエンコーディング

厳密に言えば、URLにある特殊文字は常にエンコードする必要があります。 1つの重要な注意点は、このトークやエンコーディングのすべてで威圧を感じている場合は、通常、フォームデータ以外の通常のコンテキスト外のURLに特殊文字が見つからないことです。

ほとんどのURLでは、常に許可されている単純な文字が使用されるため、エンコーディングはまったく必要ありません。

GETメソッドを使用してCGIスクリプトにデータを送信する場合は、URLを介して送信されるデータをエンコードする必要があります。 たとえば、 RSSフィードを宣伝するためのリンクを作成している場合は、URLをエンコードして、宣伝しているスクリプトのURLに追加する必要があります。

何がエンコードされるべきですか?

アルファベット文字、数字、または通常のコンテキスト外で使用されている特殊文字以外の文字は、ページにエンコードする必要があります。 以下は、URLとそのエンコーディングで見つかる共通の文字の表です。

予約文字URLエンコーディング

キャラクター URLの目的 エンコーディング
アドレスと別のプロトコル(http) %3B
/ 別のドメインとディレクトリ %2F
別々のアンカー %23
別のクエリ文字列 %3F
そして、 クエリ要素を分離する %24
@ ドメインとユーザー名とパスワードを分ける %40
エンコードされた文字を示します。 %25
+ スペースを示します。 %2B
<スペース> URLではお勧めできません %20または+

これらのコード化された例は、 HTMLの特殊文字で見られるものとは異なります。 たとえば、アンパサンド(&)文字でURLをエンコードする必要がある場合は、上記の表に示すとおり、%24を使用します。 HTMLを記述していて、テキストにアンパサンドを追加する場合は、%24を使用できませんでした。 代わりに、 "&amp;"; または "&#38;"で、両方ともレンダリング時にHTMLページに&を書き出します。 これは最初は混乱しているように見えますが、HTMLコードの一部であるページ自体に表示されるテキストと、別のエンティティであり異なるルールの対象となるURL文字列との違いは基本的です。

"&"文字、および他の多くの文字がそれぞれに表示されるという事実は、2つの違いにあなたを混乱させるべきではありません。

Jennifer Kryninのオリジナル記事。 ジェレミージラール編集。