2009-11-28 18 views
65

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

+2

URLエンコードはURLに有効なように文字をエンコードします。例えば。 '? 'は'%3F'になります。HTMLエンコードは文字をエンコードしてHTMLで有効になります。例えば。 '<'が '< ' –

+2

になるURLで使用するためにエンコードする場合は、URLエンコーディングを使用します。 HTMLページに表示するためにエンコードする場合は、HTMLエンコードします –

答えて

65

HTMLエンコーディングは、URLエンコードは、同様の処理を行い

"<hello>world</hello>" 

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

に変化するようにHTML要素との混同を防ぐために、HTMLドキュメントで使用される文字列内の特殊文字をエスケープURLの文字列値の変更のようなもの

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

実際には、両方の使用シナリオでHtmlEncodeがはるかに包括的であることがわかります。 @MehrdadはURLEncodeがプラス記号を挿入することを指摘していますが、たとえばurlrewritesを使用すると問題が発生する可能性があります。したがって、HtmlEncodeをURLの場合でも使用することははるかに問題はありません。私はURLのHtmlEncodeを使用して問題を発見したことがないが、私はURLのUrlEncodeを使用している。私の考えでは、UrlEncodeはほとんど役に立ちません。 –

+8

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

+0

UrlEncodingでURLをエンコードするためのいくつかのHtmlEncodeの使い方、スペースのエンコードに関する問題、その他の特殊文字 – PJUK

3

HTMLEncodeとURLEncodeは、HTMLとURLで無効な文字、より正確には、正しく解釈されるために特別に書き込まれる必要のある文字を扱います。たとえば、HTMLでは<と>文字がタグを示すために使用されます。したがって、1 + 1 < 2 + 2のような数式を書いたければ、通常 '<'はタグの先頭と解釈されます。 HTMLEncodingは、この文字を「& lt;」に変換します。これは小なり記号の符号化された表現です。 URLEncodingは同じことを行いますが、特殊文字が異なるURLに対しては重なりがあります。

17

urlEncodeは、アドレス指定の目的でWebブラウザ/ Webサーバーが認識できる文字に特殊文字を置き換えます。したがって、URLです。

HtmlEncodeは、置き換え文字列と特殊文字:たとえば、スペースは%20に置き換えられ、 '= 27%など...

は、これらの参照を参照してください。 &のようなものが &amp; or < = &lt; > = &lt;になると、HTMLエンジンはこれらの文字をパーツとして解釈しませんHTMLマークアップの文字列であるかのようにレンダリングします。

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

+0

"hello+world = hello world" 

実際URLENCODEは、いくつかの状況では問題になる可能性が+とのスペースを、置き換えます。 – NetMage

12

どちらもHTMLとURLのは、本質的に非常に言語を拘束されています。言語として、特定のキーワードや演算子に意味を追加します。どちらの言語でも、ほとんどの場合、キーワードは単一の文字です。例えば

  • HTML:>と<
  • URL:/と:各言語の使用では

保証するものではない方法で、これらの構造を使用することが可能ですが、言語の意味たとえば、この投稿には>文字が含まれています。私はそれをHTML、単にテキストとして解釈したくありません。

これは、エンコードとデコードの方法が有効になる場所です。これらのメソッドはそれぞれ文字列を取り、それ以外の場合はキーワードとして扱われる任意の文字を、言語の一部として解釈されないエスケープ形式に変換します。

たとえば、>をHtmlEncodeに渡すと、& gt;が返されます。

1

私はどの言語で作業しているのかよくわかりませんが、例えばPHP manualが良い説明をしています。

URLENCODE

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

Read on