UrlエンコードとHTMLエンコードの違い


85

URLエンコードHTMLエンコードの違いは何ですか?


5
URLで使用するためにエンコードする場合は、URLエンコードを使用します。HTMLページに表示するためにエンコードする場合は、HTMLエンコードします
Mitch Wheat

4
URLエンコードは、URLに対して有効になるように文字をエンコードします。例えば?なり%3F、彼らはHTMLのために有効であるように、HTMLエンコードが文字をエンコードします。例えば、<なり&lt;
マット・エレン

回答:


83

HTMLエンコーディングは、HTMLドキュメントで使用される文字列内の特殊文字をエスケープして、変更などのHTML要素との混同を防ぎます。

"<hello>world</hello>" 

"&lt;hello&gt;world&lt;/hello&gt;"

URLエンコードは、URLの文字列値に対して、変更のように同様のことを行います

"hello+world = hello world"

"hello%2Bworld+%3D+hello+world"

15
HTMLエンコーディングとURLエンコーディングは根本的に異なることをします。たとえば、「hello world」をHTMLエンコードして、それをURLに追加しようとすると、無効なURLが取得されます。どちらも重要であり、さまざまな状況で使用する必要があります。
ニール

1
URLをエンコードするためのいくつかのHtmlEncodeの使用法を調べて、UrlEncodingに置き換える必要がありました。スペースやその他の特殊文字のエンコードに関する問題
PJUK 2015年

HtmlEncodeは文字列全体に「&」文字を配置するため、UrlEncodeの代わりにHtmlEncodeを使用するとURLで問題が発生する可能性があることに注意してください。URLを受信するWebサービスが何を期待しているかによっては、いくつかの余分な「&」文字が非常に問題になる可能性があります。たとえば、WebサービスがURLの各パラメーターの前に「&」文字が付いていることを期待しているが、HtmlEncodeを使用して余分な「&」文字を追加した場合、Webサービスでエラーが発生する可能性があります。 URLを解釈しようとします。この理由から、HtmlEncodeのいくつかの使用法をUrlEncodeに置き換える必要がありました。
jdnew 1818

3
フィルは聴かないでください。彼がクエリ文字列を使用していて、UrlEncodeの代わりにHtmlEncodeを使用して最新のURLを作成しているとは信じられません。UrlEncodeがほとんど役に立たないと言うことは、私がこのサイトでしばらく見てきた中で最もばかげたことの1つです。
ナードドッグ

23

urlEncodeは、特殊文字を、アドレス指定の目的でWebブラウザ/ Webサーバーが理解できる文字に置き換えます...したがってURL。たとえば、スペースは%20、 '=%27などに置き換えられます。

これらの参考資料を参照してください。

HtmlEncodeは、特殊文字をHTMLエンジン自体によって認識される文字列に置き換えて、ページのコンテンツをレンダリングします。&amp; or < = &lt; > = &lt;これにより、HTMLエンジンがこれらの文字をHTMLマークアップの一部として解釈できなくなり、あたかもそれらがそうであるかのようにレンダリングされます。文字列。

このリファレンスを参照してください:


実際、URLEncodeはスペースを+に置き換えますが、これは状況によっては問題になる可能性があります。
NetMage 2017年

13

HTMLとURLはどちらも、本質的に非常に制約のある言語です。言語として、特定のキーワードまたは演算子に意味を追加します。ただし、これらの言語の両方で、キーワードはほとんどの場合1文字です。例えば

  • HTML:>および<
  • URL:/および:

言語の使用では、言語の意味を保証しない方法でこれらの構成を使用することは可能ですが。たとえば、この投稿には>文字が含まれています。HTMLとして解釈されるのではなく、テキストだけとして解釈されるようにします。

ここで、エンコードとデコードのメソッドが役立ちます。これらのメソッドはそれぞれ文字列を受け取り、キーワードとして扱われる文字を、言語の一部として解釈されないエスケープ形式に変換します。

例:>をHtmlEncodeに渡すと、&gt;が返されます。


3

HTMLEncodeとURLEncodeは、HTMLとURLの無効な文字、より正確には、正しく解釈するために特別に記述する必要のある文字を処理します。たとえば、HTMLでは、<文字と>文字はタグを示すために使用されます。したがって、1 + 1 <2 + 2のような数式を記述したい場合、通常、「<」はタグの先頭として解釈されます。HTMLEncodingは、この文字を「&lt;」に変換します これは、小なり記号のエンコードされた表現です。URLEncodingは同じことを行いますが、一部の重複はありますが、特殊文字が異なるURLの場合です。


1

あなたがどの言語で作業しているのかわかりませんが、例えばPHPのマニュアルには良い説明があります。

URLエンコード

-_を除くすべての英数字以外の文字を含む文字列を返します。パーセント(%)記号に置き換えられ、その後にプラス(+)記号としてエンコードされた2桁の16進数とスペースが続きます。これは、WWWフォームから投稿されたデータがエンコードされるのと同じ方法でエンコードされます。つまり、application / x-www-form-urlencodedメディアタイプの場合と同じ方法です。これは、歴史的な理由から、スペースがプラス(+)記号としてエンコードされるという点で、»RFC 1738エンコーディング(rawurlencode()を参照)とは異なります。

読む

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.